۲۰ نکته برای اینکه برنامه‌نویس بهتری بشوید

نکات ساده مرتبط با کدنویسی که تمرین کردن اون‌ها کمک می‌کنه تا برنامه‌نویس‌های بهتری باشیم.

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

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

1- همیشه باید فقط یک راه و نقطه خروج در کد هر متد وجود داشته باشد (از if else فقط هنگامی که لازم است استفاده کنید)

2- وقتی از if else استفاده می‌کنید مطمئن شوید که کد کوتاهتر را در بخش if قرار می‌دهید و کد طولانی‌تر را در بخش else

if (cond) {
   //only a few lines of code
}
else {
   //here you should write the "bigger" case
   //many many lines
}

3- اگر می‌توانید از throw کردن execption ها اجتناب کنید، این کار را بکنید. throw کردن execption (به صورت عمدی) باعث کند شدن کد شما می‌شود. اگر حس این رو دارید که یک چیزی رو throw‌ کنید و بعد catch کنید (کنایه به throw کردن و catch کردن exception ها) با سگ‌تون توپ بازی کنید! اگر سگ ندارید یکی بگیرید، فوق‌العاده هستند!

4- کارهای زیادی رو در یک خط کد انجام ندهید، وقتی که به خطا برخورد کنید debug کردن مشکل‌تر می‌شه. به عنوان مثال کدی مشابه کد زیر ننویسید:

  String result = hasInformation()? getState() : (hasMoreInformation() ? getOtherState() : getState());

توضیح مترجم: گاهی با برنامه‌نویسانی مواجه شدم که به اشتباه فکر می‌کنند، اینکه مثلاً از کدی مطابق کد بالا استفاده کنند باعث صرفه جویی در تعداد خط کد و ساده‌تر شدن برنامه می‌شود. این مساله از درک غلط نسبت به مفهوم سادگی کد ناشی می‌شود.

5- به قطعه کدهایی که مشابه هم به نظر می‌رسند نگاه کنید و اگر چیزی پیدا کردید: refactor کنید!

6- اسامی با معنی انتخاب کنید. اگر درباره انتخاب اسم مطمئن نیستید، یک دقیقه دیگه هم درباره‌اش فکر کنید. اگر باز هم مطمئن نبودید نظر همکارانتون رو بخواهید.

7- هر جا که می‌توانید از hashmap (یا همان hash table) به جای list و صف استفاده کنید این کار را بکنید.

8- اگر می‌توانید به جای I/O (معمولاً کار با دیتابیس) از مکانیزم‌های کش استفاده کنید، از کش استفاده کنید.

9- اگر یک regex ساده و زیبا می‌تونه کار رو انجام بده ازش استفاده کنید.

10- از regex برای parse کردن (مثلاً HTML/XML/json) استفاده نکنید، در هر زبانی کتابخانه‌های خاصی برای این کار وجود دارد.

11- log‌ کنید. حداقل باید دو سطح لاگ برای debug و error داشته باشید.

توضیح مترجم: درباره logging به نظرم ایده‌های بهتری وجود دارد، درباره‌شان در نوشته دیگری خواهم نوشت.

12- از stackoverflow استفاده کنید، نه فقط برای سوال پرسیدن. روزی چند دقیقه به پاسخ به سوالات دیگران اختصاص بدید، از اینکه اینطوری چقدر چیزی یاد می‌گیرید شگفت زده خواهید شد!

13- قانون انگشت: اگر متد شما بیشتر از 50 خط است، بشکنیدش. اگر کلاس شما بیشتر از 500 خط است، بشکنیدش. اگر فکر می‌کنید که کدتون رو نمی‌تونید به قطعات کوچکتر بشکنید، یک کاری رو اشتباه انجام دادید. این توصیه بسته به زبان برنامه‌نویسی فرق می‌کنه. مثلاً در جاوا یا سی شارپ 50 خط کد قابل قبول هست ولی مثلاً برای زبان‌هایی مثل Ruby یا Python خیلی زیاد محسوب می‌شه.

14- کدی که فقط برای خودتان قابل توضیح هست خوبه ولی مشکل هم ایجاد می‌کنه. اگر مطمئن نیستید که کدتون چقدر "واضح" هست کامنت بنویسید.

15- وقتی برای کد کامنت می‌نویسید همیشه فرض کنید که خواننده کامنت اصلاً خبر نداره که شما سعی دارید چه کار کنید. با حوصله توضیح بدید. کسی به خاطر اینکه کامنت‌های شما طولانی هست به شما ایراد نخواهد گرفت.

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

توضیح مترجم: نویسنده قصد داره به اهمیت به روز بودن در این حرفه اشاره کنه که در این مورد هم مطلب جداگانه‌ای خواهم نوشت.

17- تمرین کنید که باعث کامل و بی‌نقص شدن می‌شه: به hackathon‌ها بپیوندید. code-challenge ها رو حل کنید.

توضیح مترجم: در کار ترجمه عباراتی که در حوزه نرم‌افزار هستند بعضی عبارات رو نمی‌شه ترجمه کرد و کلمه اصلی معنا رو به شکل مناسب‌تری منتقل می‌کنه.

18- با IDE های مختلفی کار کنید تا اونی که براتون راحت تر هست رو پیدا کنید.

توضیح مترجم: این مورد درباره برنامه‌نویسان مایکروسافتی صدق نمی‌کنه، در واقع بهتر از Visual Studio هنوز خلق نشده!

با تشکر از نکته‌سنجی و پیشنهاد درست dotErfan@ عبارت بالا رو این‌طور اصلاح می‌کنم: برای برنامه‌نویسان مایکروسافتی در حوزه IDE انتخاب‌های زیادی وجود ندارد، حتی اگر سوار قایق IDE هایی نظیر SharpDevelop یا MonoDevelop بشوید احتمالاً بعد از مدت کوتاهی شما را بر عرشه کشتی Visual Studio خواهم دید!

19- هر وقتی باگی پیدا می‌کنید قبل از رفع کردنش، یک unit test بنویسید که بتونه این باگ رو بگیره و مطمئن بشید که کار می‌کنه.

20- تنبل نشید RFTM