وقتی صحبت از برنامه نویسی خوب میشود، میتوانید درباره آن به مباحثه بپردازید و مشخص کنید که نهایتاً کدام یک از الگوهای برنامه نویسی مناسب هستند. در این مقاله قصد داریم به ۳ روش مهم برنامه نویسی پرداخته و آنها را با یکدیگر مقایسه کنیم. این روشها عبارتند از برنامه نویسی رویهای، شیگرا و تابعی.
در مثالهایی که برای کدهای جاوااسکریپت زده خواهد شد، به هر ۳ مورد خواهیم پرداخت. اما این ۳ روش در اکثر زبانهای برنامه نویسی بکار میروند. برخی از زبان های برنامه نویسی شما را به سوی پارادایم خاصی سوق میدهند درحالی که جاوااسکریپت چنین نیست.
منظور از برنامه نویسی رویهای همان برنامه نویسی با استفاده از Procedure ها است. به عبارت دقیقتر برنامه شما دارای مراحلی است که باید به ترتیب اجرا شوند. به مثال زیر توجه کنید:
const button = document.querySelector('button'); const doSomething = () => { // do something... } button.addEventListener('click', doSomething);
در این قطعه کد ۴ مرحله وجود دارد.
این یک برنامه ساده با استفاده از کدهای جاوااسکریپت است. در واقع زمانی که جاوااسکریپت را یاد میگیرد، اولین کدهایی که مینویسید به این شکل هستند. این حالت از برنامه نویسی را میتوان برنامه نویسی رویهای نامید. زیرا در این حالت، چندین مرحله وجود دارد که پشت سر هم اجرا میشوند. البته این منطق برای کلیه برنامهها صادق است اما به هیچ وجه قصد دسته بندی منطقها را نداریم. علاوه بر این ما از تابع doSomething برای پاسخگویی به کدهای درخواستی به وسیله کلیک بر روی button استفاده کردهایم.
اگر سبک برنامه نویسی شیگرا را برای نوشتن این برنامه انتخاب کنیم، قطعه کد آن به صورت زیر خواهد بود:
class InputArea { constructor() { this.button = document.querySelector('button'); this.button.addEventListener('click', doSomething); } doSomething() { // do something } } new InputArea();
همانطور که گفته شد، این قطعه کد مثالی ساده است. در اپلیکیشنهای بزرگتر، میتوانید با گروه بندی کلاسها و اشیا، قطعه کد خود را طوری بنویسید که خواندن و مدیریت آن آسان باشد.
ایده برنامه نویسی شی گرا که به اختصار به آن OOP گفته میشود، این است که شما کدهایتان را در قالب کلاسها و اشیا سازماندهی کنید. دادههای شما در Properties یا همان خواص اشیا، و منطق برنامهتان در متدها ذخیره میشود. این خواص و متدها در داخل همان کلاس در کنار هم قرار میگیرند.
با این اوصاف برنامه نویسی تابعی چیست؟ آیا بهترین روش برنامه نویسی، برنامه نویسی تابعی است؟
در پاسخ باید گفت خیر. این روش تنها راهی برای سازماندهی کدهای شما است و یک بار دیگر میتوان گفت که نوعی توسعه کد است.
function findElementOnPage(elementTag) { return document.querySelector(elementTag); } function doSomething() { // do something } function connectInput() { const btn = findElementOnPage('button'); btn.addEventListener('click', doSomething); } connectInput();
شما میتوانید به صورتهای متفاوتی با این روش برنامه نویسی کنید. مثلاً تعداد تابعهایتان زیاد یا کم باشد. اما ایده اصلی برنامه نویسی تابعی این است که کدهای خود را در قالب چندین تابع دسته بندی کنید تا هر تابع بتواند به صورت مستقل عمل کند.
قسمت آخر مهم است: توابع میتوانند هیچ گونه وابستگی به قسمتهای مختلف برنامه نداشته باشند و یا از قسمتهای دیگر مانند بخشهای مربوط به کدهای DOM تاثیر پذیرند.
گاهی اوقات نمیتوان از بروز عوارض جانبی جلوگیری کرد و البته اشکالی ندارد اما باید برای توابعی که پارامترهای ورودی دارند برنامهریزی کنید و یک خروجی مطمئن تولید کرده و بازگردانید.
findElementOnPage یک تابع مستقل و بدون وابستگی است که تا زمانی که یک المنت در صفحه پیدا میشود، برای هر ورودی همیشه یک خروجی تولید میکند که همیشه مقداری ثابت است. از این رو میتوان استدلال کرد که در واقع یک اثر جانبی دارد که البته DOM را دستکاری نمیکند، اما به آن دسترسی پیدا میکند.
مزیت برنامه نویسی تابعی این است که شما در برنامه خود توابعی با قابلیت استفاده مجدد و قابل کنترل دارید که حتی کوچکترین وابستگی به هیچ چیز ندارند. این باعث میشود که کدهای شما بسیار ساده باشد و قابلیت درک آن افزایش پیدا کند. دقیقاً مانند رویکرد برنامه نویسی شی گرا. این رویکرد میتواند برای موارد کاربردی بسیار ساده مانند مثال بالا هم مورد استفاده قرار گیرد، اما واقعاً در کاربردهای پیچیدهتر عملکرد بهتری دارد.
بنابراین کدام یک از روشها بهترین روش برای برنامه نویسی است؟ در واقع هیچ کدام از روشها نسبت به دیگری برتری خاصی ندارد و استفاده از آنها به نوعی بستگی به سلیقه شما دارد. با گذشت زمان و کسب تجربه میتوانید مشخص کنید که کدام روش برای پروژهای که در حال حاضر بر روی آن کار میکنید مناسب است.
غالباً از سبکهای شی گرایی و برنامه نویسی تابعی استفاده خواهید کرد، زیرا سبک رویهای را نمیتوان در برنامههای بزرگتر بکار برد. در هر پروژهای میخواهید کدهای خود را سازماندهی کرده و از هم جدا کنید.
البته میتوانید به صورت ترکیبی هم از این روشهای برنامه نویسی رویهای، شیگرا و تابعی استفاده کنید.
امیدواریم که مطالعه این مقاله، به شما در پروژههای آیندهتان کمک کند. لطفاً نظرات خود درباره این مقاله را با ما به اشتراک بگذارید.
[button class=”github-btn” href=”http://frontcast.ir/efficient-learning-techniques”]پادکست شماره ۶: روشهای کارآمد برای یادگیری برنامه نویسی[/button]
۵۰ درصد تخفیف ویژه نوروز فرانت کست تا ۱۵ فروردین
کد تخفیف: spr
دیدگاهها: