10 اصل اساسی برنامه نویسی که هر برنامه نویس باید بداند
کد شما باید واضح باشد و نگهداری و پشتیبانی آن آسان باشد. در این مقاله چندین اصل اساسی برنامه نویسی بیان شده است که به شما کمک می کند تا کد شما تمیز باشد.
نوشتن کد آسان است اما نوشتن کد خوب چالش برانگیز است. پذیرش اصول اولیه برنامه نویسی راهی مطمئن برای نوشتن کد با کیفیت بالا است که بدون توجه به اندازه پروژه، نرم افزاری کارآمد، قابل خواندن، قابل اعتماد، ایمن و قابل نگهداری است.
کد بد به اشکال مختلف وجود دارد: زنجیره های درهم و برهم، عظیم، برنامه های غیرقابل اعتماد، متغیرهایی که منطقی نیستند، و غیره. چگونه کد موثر بنویسید؟ با نظم و هدف. در اینجا اصول برنامه نویسی اصلی بیان شده که شما را به کدنویس بهتری تبدیل می کند.
فهرست مطالب
1. ساده نویسی (KISS)
کمی خشن به نظر می رسد، اما یکی از مهم ترین اصولی است که هنگام نوشتن کد باید از آن استفاده کنید. KISS به چه معناست؟
KISS مخفف Keep It Simple, Stupid است و بدان معنی است که شما باید کد را تا حد امکان ساده بنویسید. یکی از قوانین برنامه نویسی اولیه این است که هرگز در تلاش برای زرنگ بودن یا خودنمایی با یک سکشن بزرگ کد پیچیده خود را گرفتار نکنید. اگر می توانید یک اسکریپت را در یک خط بنویسید، آن را در یک خط بنویسید.
در زیر یک تابع ساده وجود دارد:
function addNumbers(num1, num2) {
return num1 + num2;
}
خیلی ساده. خواندن آن آسان است و شما دقیقاً می دانید که چه اتفاقی دارد می افتد.
یکی از اصول برنامه نویسی استفاده از نام متغیرهای واضح است. از کتابخانه های کدگذاری استفاده کنید و از ابزارهای موجود استفاده کنید. پس از شش ماه می توانید به راحتی با کد خود ارتباط برقرار کنید. ساده نگه داشتن همه چیز شما را از رنج های بیهوده نجات خواهد داد.
2. کد تکراری ننویسید (DRY)
اصل برنامه نویسی DRY که مخفف Don’t Repeat Yourself است، به طور واضح به معنی تکرار نشدن کد است. این یک اشتباه رایج در کدنویسی است. هنگام نوشتن کد، از تکراری شدن داده ها یا منطق خودداری کنید. اگر تا به حال کدی را در برنامه خود کپی و جایگذاری کرده اید، این کد DRY نیست.
به این اسکریپت نگاه کنید:
function addNumberSequence(number) {
number = number + 1;
number = number + 2;
number = number + 3;
number = number + 4;
number = number + 5;
return number;
}
به جای تکرار خطوط، سعی کنید الگوریتمی را پیدا کنید که به جای آن از یک حلقه استفاده کند.
نگهداری کد DRY آسان است. اشکال زدایی یک حلقه که 50 تکرار را مدیریت می کند، آسان تر از 50 بلوک کد است که هر کدام یک تکرار را مدیریت می کنند.
3. باز/بسته (Open/Closed)
این اصل برنامه نویسی به این معنی است که شما باید سعی کنید کد خود را برای برنامه های افزودنی باز اما برای اصلاح بسته کنید. این تضمین میکند که کدی ایجاد میکنید که نیازی به اصلاح ندارد، حتی زمانی که نیازمندیها تغییر میکنند. این یک اصل مهم در هنگام انتشار یک کتابخانه یا فریم ورکی است که دیگران از آن استفاده خواهند کرد.
به عنوان مثال، فرض کنید در حال حفظ یک فریم ورک رابط کاربری گرافیکی هستید. میتوانید نسخهای را برای کدنویسها منتشر کنید تا مستقیماً کد منتشر شده شما را اصلاح و ادغام کنند. با این حال، وقتی یک بهروزرسانی بزرگ را چهار ماه بعد منتشر میکنید، چه اتفاقی میافتد؟
باعث خرابی کد آن ها می شود؛ این کار احتمالاً افراد استفاده کننده از کتابخانه طراحی شده توسط شما را بسیار ناراضی خواهد کرد. آنها نمی خواهند برای مدت طولانی تری از کتابخانه شما استفاده کنند، مهم نیست چقدر در دوران اوج خود مفید بوده است.
در عوض، کدی را منتشر کنید که از تغییر مستقیم جلوگیری می کند و گسترش را تشویق می کند. اصول اولیه برنامه نویسی مانند این رفتار اصلی را از رفتار اصلاح شده جدا می کند. کد پایدارتر و نگهداری آسان تر است.
4. اصل ترکیب بر وراثت
اگر با استفاده از برنامه نویسی شی گرا کد بنویسید، این اصل برنامه نویسی را بسیار مفید خواهید یافت. اصل ترکیب بر وراثت بیان می کند که اشیاء با رفتارهای پیچیده باید دارای نمونه هایی از اشیاء با رفتارهای فردی باشند. آنها نباید کلاسی را به ارث ببرند و رفتارهای جدیدی اضافه کنند.
تکیه بر ارث باعث دو مسئله اساسی می شود. اول، سلسله مراتب وراثت می تواند با عجله به هم ریخته شود. همچنین در تعریف رفتارهای مورد خاص انعطاف کمتری دارید. فرض کنید می خواهید رفتارهایی را برای اشتراک گذاری پیاده سازی کنید:
برنامه نویسی کامپوزیشن برای نوشتن تمیزتر است، نگهداری آن آسان تر است و به رفتارهای تعریف کننده اجازه انعطاف پذیری می دهد. هر رفتار فردی طبقه خاص خود را دارد. شما می توانید با ترکیب رفتارهای فردی رفتارهای پیچیده ایجاد کنید.
5. مسئولیت واحد (Single Responsibility)
اصل مسئولیت واحد بیان می کند که هر کلاس یا ماژول در یک برنامه باید فقط یک عملکرد خاص را ارائه دهد. همانطور که رابرت سی مارتین می گوید: “یک کلاس باید تنها یک دلیل برای تغییر داشته باشد.”
کلاس ها و ماژول ها اغلب از این طریق شروع می شوند. مراقب باشید که مسئولیت های زیادی اضافه نکنید زیرا کلاس ها پیچیده تر می شوند. Refactor کنید و آنها را به کلاس ها و ماژول های کوچکتر تقسیم کنید.
پیامد بارگذاری بیش از حد کلاس ها دو بار است. اول، هنگامی که می خواهید یک ماژول خاص را برای عیب یابی جدا کنید، اشکال زدایی را پیچیده می کند. دوم، ایجاد عملکرد اضافی برای یک ماژول خاص دشوارتر می شود. اصول برنامه نویسی خوب از بروز این مشکلات قبل از تبدیل شدن به مشکل جلوگیری می کند.
6. تفکیک نگرانی ها (Separation of Concerns)
مفهوم تفکیک نگرانی ها نسخه ای انتزاعی از اصل مسئولیت واحد است. این ایده بیان می کند که باید برنامه هایی با قسمت های مختلف طراحی کنید و این قسمت ها نباید به یکدیگر دسترسی داشته باشند.
یک مثال شناخته شده در این مورد، طراحی مدل-نما-کنترلر (MVC) است. MVC یک برنامه را به سه بخش مجزا تقسیم می کند: داده ها (model)، منطق (controller)، و آنچه صفحه نمایش می دهد (view). تغییرات MVC در محبوب ترین چارچوب های وب امروزی رایج است.
به عنوان مثال، کدی که پایگاه داده را کنترل می کند، نیازی به دانستن نحوه نمایش داده ها در مرورگر ندارد. کد رندر ورودی را از کاربر می گیرد، اما کد منطقی پردازش را مدیریت می کند. هر قطعه کد کاملا مستقل است.
نتیجه کدی است که به راحتی دیباگ می شود. اگر زمانی نیاز به بازنویسی کد رندر داشتید، می توانید این کار را بدون نگرانی در مورد نحوه ذخیره داده ها یا پردازش منطق انجام دهید.
7. شما به آن نیاز ندارید (YAGNI)
اصل YAGNI مخفف You Aren’t Going to Need It است و به این معنی است که هرگز نباید برای عملکرد به صورت غیرمجاز کدنویسی کنید که ممکن است در آینده به چیزی نیاز داشته باشید. یکی از مهمترین اصول برنامه نویسی برای یادگیری این است که نباید سعی کنید مشکلی را که وجود ندارد حل کنید.
در تلاش برای نوشتن کد DRY، برنامه نویسان ممکن است این اصل را نقض کنند. اغلب، برنامه نویسان بی تجربه سعی می کنند انتزاعی ترین و عمومی ترین کدی را که می توانند بنویسند. با این حال، انتزاع بیش از حد باعث ایجاد کد متورم می شود که نگهداری آن غیرممکن است.
اصول برنامه نویسی DRY را فقط در مواقعی که نیاز دارید اعمال کنید. اگر متوجه شدید که تکههایی از کد نوشته شده است، یک لایه انتزاعی را پیادهسازی کنید.
8. کد خود را مستند کنید
با تمام این صحبت ها در مورد اصول کدنویسی، می توان به راحتی برنامه نویسی که در آینده ممکن است مسئول نگهداری یا توسعه برنامه شما باشد، فراموش کرد.
هر توسعه دهنده ارشد بر اهمیت مستندسازی کد شما با کامنت های مناسب تاکید می کند. همه زبان های برنامه نویسی کامنت گذاری را ارائه می دهند. باید نوشتن آنها را به عادت تبدیل کنید. کامنت ها را برای توضیح اشیاء، بهبود تعاریف متغیرها و آسانتر کردن درک عملکردها بگذارید.
در اینجا یک تابع جاوا اسکریپت با کامنت هایی است که شما را از طریق کد راهنمایی می کند:
// This function will add 5 to the input if odd, or return the number if even
function evenOrOdd(number) {
// Determine if the number is even
if (number % 2 == 0) {
return number;
}
// If the number is odd, this will add 5 and return
else {
return number + 5;
}
}
هنگامی که در حال کدنویسی هستید، گذاشتن کامنت، کار کمی بیشتر است. زمان می برد و توجه شما را از کار اصلی در دست می گیرد. به هر حال شما کد خود را به خوبی درک می کنید، درست است؟ چه کسی اهمیت می دهد؟ شایان ذکر است که هیچ چیز یکبار مصرف نیست، حتی در دنیای فناوری.
توصیه میکنیم هر جا که نگران گیج یا مبهم شدن چیزها هستید، برای خود کامنت بنویسید، مخصوصاً هنگام همکاری با دیگران. توسعه دهندگان همکار خود را با مجبور کردن آنها به رمزگشایی کدتان ناامید نکنید!
سعی کنید یک برنامه بنویسید، آن را به مدت شش ماه به حال خود رها کنید و برای اصلاح آن برگردید. شما خوشحال خواهید شد که برنامه خود را به جای اینکه مجبور باشید روی هر تابعی وقت بگذارید تا نحوه عملکرد آن را به خاطر بسپارید، مستندسازی کنید.
9. بازنویسی (Refactor)
پذیرش آن سخت است، اما کد شما در اولین بار کامل نخواهد بود. Refactoring کد به این معنی است که کد خود را بازبینی کنید و به دنبال راه هایی برای بهینه سازی آن باشید و در عین حال نتایج را دقیقاً یکسان نگه دارید. این یک نکته برای نوشتن کد تمیزتر و با کیفیت است.
پایگاه های کد به طور مداوم در حال تکامل هستند. یکی از اصول برنامه نویسی این است که به یاد داشته باشید که بازدید مجدد، بازنویسی یا حتی طراحی مجدد کل تکه های کد کاملاً طبیعی است.
این بدان معنا نیست که شما اولین باری که برنامه خود را نوشتید موفق نشدید. شما به ناچار با گذشت زمان با یک پروژه بیشتر آشنا خواهید شد. از این دانش برای تنظیم خود هنگام پیشرفت استفاده کنید.
10. نوشتن کد تمیز به هر قیمتی
جدا از تمام اصول برنامه نویسی اساسی، نفس خود را در خانه بگذارید و نوشتن کد هوشمندانه را فراموش کنید. وقتی این را می گوییم، منظور آن نوع کدی است که بیشتر شبیه یک معما است تا راه حل. شما برای تحت تاثیر قرار دادن غریبه ها برنامه نویسی نمی کنید. شما در این حرفه برای حل مشکلات هستید.
سعی نکنید حجم زیادی از منطق را در یک خط جمع کنید. دستورالعمل های واضح را در کامنت ها و داکیومنت خود قرار دهید. اگر کد شما به راحتی قابل خواندن باشد، معمولا نگهداری از آن نیز آسان خواهد بود.
برنامه نویسان خوب و کدهای خوانا دست به دست هم می دهند. در صورت لزوم کامنت خود را بنویسید، به راهنماهای سبک پایبند باشید و تا حد امکان خود را به جای برنامه نویس بعدی قرار دهید و کد را قابل فهم تر کنید.
اصول برنامه نویسی را بیاموزید تا یک برنامه نویس خوب باشید
یادگیری اینکه چگونه یک برنامه نویس خوب باشید زمان و تلاش زیادی را می طلبد. این قوانین برنامه نویسی پایه، نقشه راهی برای تبدیل شدن به یک برنامه نویس حرفه ای است. با پیروی از این اصول قدیمی، خود را برای موفقیت در حرفه برنامه نویسی آینده خود آماده خواهید کرد.
نظرات کاربران