Mahdi Azadbar
Mahdi Azadbar
خواندن ۴ دقیقه·۶ سال پیش

ایده‌ها، تکنیک‌ها و مهارت های برنامه نویسی تمیز و حرفه ای

برنامه نویس های خوب بر اساس کیفیت کدهایشان تعریف می شوند. در نرم افزار، نوشتن کد خوب و تمیز به این معنی است که پولتان را برای تست، بروزرسانی، و توسعه کدهای خود خرج کنید تا اینکه این هزینه را برای رفع اشکالات هزینه کنید. در این مقاله، به شما مثالهای واقعی از استفاده برخی تکنیک‌ها برای تمیز نگهداشتن کد، و اصلاح آن برای قوی تر شدن(بدون باگ شدن) و ماژولار شدن، ارایه خواهیم کرد. این تکنیک ها نه تنها به شما برای اصلاح کدهای قدیمی کمک می‌کنند. بلکه می‌تواند به عنوان یک تصویری ذهنی خوب برای شما عمل کند تا از این به بعد به صورت تمیز کد بنویسید.

اصلاح کد[1] چیست و چرا به ان احتیاج داریم؟

اصلاح کد به تکنیک ها و قدم هایی که برای نوشتن کد تمیز به شما کمک می کند اشاره دارد. این برای سایر برنامه نویسان هم مهم می‌باشد، کسایی که کد شما را میخوانند، توسعه می‌دهند و از آن استفاده مجدد میکنند بدون اینکه نیاز به تغییرات زیادی داشته باشند.

در ادامه ما مثالهایی برای اصلاح و بهینه تر کرد کدهایتان خواهیم دید.


هرگز کدهایی که تست واحد[2] ندارند را اصلاح نکنید.

توصیه ابتدایی من این است که هیچ موقه شروع به اصلاح کدهایی که برای آنها تست وجود ندارد نکنید. احساس میکنم دلیل آن روشن باشد: شما با توابعی مواجه می شوید که هیچ ایده‌ای در مورد طرز کار انها ندارید. پس اگر شما میخواید کدها را اصلا کنید با تست های نوشته شده برای آن شروع کنید. مطمین شوید که کدهایی که میخواهید اصلاح کنید توسط تست ها پوشش داده شده باشند. در مورد پوشش کد[3] در زیان برنامه نویسی مورد نظرتان جستجو کنید.


از داخلی ترین بخش کدها، اصلاح را شروع کنید.

به تصویر زیر نگاه کنید. این یک عکس از یک پروژه مدیریت هتل به زبان PHP است که روی Github بود برداشته شده است.

همان طور که در این متد می‌بینید، سه مرحله توسط خطوط قرمز رنگ مشخص شده است. داخلی ترین بخش، if / else می باشد که که در درون بخش کد شرطی if ابتدایی می باشد. معمولا، با تمرکز بر داخلی‌ترین سطح، اصلاح کدها آسان تر می شود.


یک متد بزرگ را به متد های کوچکتر تقسیم کنید.

در این مثلا بالا، ما میتوانیم داخلی ترین بخش را به یک متد private تغییر دهیم.

برای داخلی‌ترین بخش بعدی، متد add() را ببینید که پس از اصلاح کد، تمیزتر، خواناتر و قابل تست شد.


همیشه از {} برای دستور if استفاده کنید.

اکثر زبان های برنامه نویسی دستورات شرطی تک خطی پشتیبانی می‌کنند، و اکثر برنامه نویس ها به دلیل سادگی از آن استفاده میکنند، اما باید توجه داشت که کدهای تک خطی خوانایی ندارند و یک خط خالی ممکن است منطق برنامه را عوض کند و مشکلاتی را در خوانایی و اجرا بوجود بیاورد.


از اعداد و متن های جادویی استفاده نکنید.

در مثال بعدی، میبینید که اگر rooms از 250 بیشتر باشد، یک متن خطا بر می‌گرداند. در این مورد، 250 یک عدد جادویی است. اگر شما برنامه نویسی باشید که این کد را ننوشته باشید، برای شما مشکل است که بفهمید این عدد چه مفهومی دارد.

برای اصلاح این کد، ما در نظر میگیریم که که 250 حداکثر تعداد rooms میباشد. با این حال، به جای استفاده مستقیم از اعداد یا متن ها (hardcoding) ما میتوانیم آن را به یک متغییر $maxAvailableRooms نسبت دهیم. حالا این کد برای سایر برنامه نویس ها هم قابل فهم می باشد.


از دستور else استفاده نکنید، اگر به آن احتیاج ندارید:

در متد ()availablerooms در مثال قبل به کد if توجه کنید. ما به راحتی می توانیم else را حذف کنیم در حالی که منطق برنامه حفظ شود.


از نامگذاری با معنی، برای متدها، متغییرها، و تست ها استفاده کنید.

در مثال بعدی، شما دو متد از از برنامه مدیریت هتل مشاهده میکنید. Index() و room_m()، من نمیتوانم هدف این متد هها را متوجه شوم. و اگر این نام ها، نامهای توصیفی بودند، قابلیت خواندن و فهم برنامه به مراتب بیشتر می شد.


از حداکثر قابلیت های زبان برنامه نویسی مدنظرتان استفاده کنید.

اکثر برنامه نویسان از قدرت و امکانات زبان برنامه نویسی که استفاده می‌کنند آگاه نیستند. خیلی از این ویژگی ها می تواند سختی های برنامه نویسی را کاهش دهند و کدهای قویتری را برای شما ایجاد کنند. به مثال بعد نگاه کنید. شما می توانید از کد بسیار کمتر برای یک خروجی یکسان به وسیله استفاده از code hinting استفاده کنید.

این مطلب رو با چندتا توصیه کوچک برای کدنویسی بهتر تموم میکنیم:

  • متدهای public را بهتر است نامهای کوتاه توصیفی داشته باشند. اما متدهای private میتوانند نامهای بلندتری داشته باشند به دلیل اینکه یک محدوده مشخصی را در بر دارند.
  • از نامهای عمومی برای interface ها استفاده کنید مانند add. و از نامهای توصیفی برای کلاسهای با یک متد استفاده کنید. مانند addUser یا addDocumnet.
  • متد های بلااستفاده را حذف کنید.
  • از پیشوند is/has برای توابعی که مقدار Boolean بر میگرداند استفاده کنید. مانند (isAdmin($user یا (hasPermission($user.
  • همیشه سطح دسترسی کلاس‌ها و متدها را مشخص کنید.
  • همیشه قاعده single Responsible از اصول SOLID را رعایت کنید.

مطالب بیشتر:

- Software Architecture The Difference Between Architecture and Design
- Software Architecture: Architect Your Application with AWS
- Write clean code and get rid of code smells with real life examples

منبع:

https://medium.com/@maladdinsayed/advanced-techniques-and-ideas-for-better-coding-skills-d632e9f9675

[1] Refactoring

[2] Unit teste

[3] Code coverage

مهارت های برنامه نویسیclean codeبرنامه نویس حرفه ای
شاید از این پست‌ها خوشتان بیاید