برنامه نویسی از که آموختی؟ از برنامه نویسان بد! قسمت دوم

یک روش خوب یاد گرفتن برنامه نویسی خوب، بررسی ضد الگوها/AntiPatterns است. اساتید، نمونه‌های بدی که می‌بینن رو منتشر می کن تا بقیه ببینن که چه روشی اشتباهه و از روش روش خوب رو درک کنن. این مجموعه نمونه های بد برنامه نویسی رو من مدت‌ها پیش دیدم و همیشه گذاشته بودم در موردشون بنویسم.. که ظاهرا رسید به الان. به قول خودمون «ادب از که آموختی از بی ادبان». این قسمت دوم از یک مجموعه دو قسمتی است.

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

کامنت اضافی هم چیز بدیه! اینجا بحث زیاده. بعضی ها فیگور «کد کامنت است» میان و بعضی ها برای هر خط کد۱۰ خط کامنت می نویسن. بهتره شما منطقی باشین و معتدل. اشکالی اصلی کد رو این ببینین که برای یک نفر حرفه ای، توضیحات دو تا می شه: کامنت و کد! اگر کامنت شما داره کد رو توضیح می ده، احتمالا کامنت خوبی نیست. کامنت باید اشاره به فلسفه کلی اون بخش بکنه یا مرجعش یا توضیحی از طرف برنامه نویس. بعضی ها می گن کامنت ها باید الگوریتم و دلایل رو توضیح بدن نه روش رو. اگر کد شما بدون کامنت، ناخوانا است یعنی کد بدی نوشتین. اگر قراره جلوی متغیر، توضیح بدین محتواش چیه، بهتره اسم متغیر رو به اون محتوا تغییر بدین. بدترین حالت وقتی است که کد با کامنت نخونه. به هرحال بحث زیاده. مواظب باشین که بین نوشتن کد لابلای صدها خط کامنت و ادعای «کد برای برنامه نویس خوب کامنته» جای معقولی بایستین.

عملیات پیچیده رو نباید در if انجام بدین. من اخیرا در این مورد یه تذکر گرفتم و کدم رو اصلاح کردم. بهتره بخش های مختلف رو قبلا حساب کنین و در متغیرهایی با اسم های خوب بنویسین و بعد یک ایف خوانا بنویسین که «اگر فلان و بهمان». تنها استثناء وقتی است که بخواین با && در ایف، جلوی اجرای شدن قسمت دوم در صورت اشتباه بودن قسمت اول رو بگیرین.

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