تحول برنامه نویسی با کتاب Clean Code‌ (معرفی)

کتاب Clean Code نوشته Robert C. Martin
از نظر من این کتاب از مهم‌ترین کتاب‌هاییه که یه برنامه نویس توی مراحل حرفه ای شدنش باید بخونه و معتقدم خوندنش برای کسایی که از مراحل اولیه برنامه نویسی به عنوان یه تخصص عبور کردن کمک می‌کنه که خیلی سریع‌تر حرفه ای بشن و از هم سطح هاشون به طور جدی جلو بیافتن.

کتاب کد تمیز - علی فاضلی
کتاب کد تمیز - علی فاضلی


این کتاب احتمالا برای کسایی که خیلی تازه کار هستن زیاد مفید نیست ولی به عنوان کسی که ۱۰ سالی هست که با برنامه نویسی درگیره یکی از حسرت هام اینه که چرا زودتر نخوندمش. هدفم از نوشتن این پست ها هم انتقال برداشت های خودم از کتاب به بقیه به خصوص کسایی که جدیدا به طور حرفه ای وارد برنامه نویسی شدنه و هم تشویق همه ی برنامه نویس ها به خوندنش (و صد البته استفاده ازش!).

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

کتاب Clean Code کتابی نیست که یکبار بخونیم و بذاریمش کنار، در طول زندگی کاری برنامه نویسی خوبه که بارها بهش برگردیم و بخش های مختلفش رو مرور کنیم. من برای نوشتن این سری، مجدد شروع به خوندن کتاب کردم و احتمالا تو سالای آینده هم بهش برمی‌گردم.

تشخیص کد خوب و بد

Spaghetti-Clean-Code-Ali-Fazeli
Spaghetti-Clean-Code-Ali-Fazeli


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

جلسه های code review چطور میگذره؟ چقدر مشکلات غیرعادی توی جلسه دیده می‌شه؟

بعد از هر release با چه حجمی از ‌‌bug مواجه می‌شید؟

چقدر برای هر‌بار ‌release کردن با استرس برنامه ریزی می‌کنید؟

برای اضافه کردن هر feature جدید چقدر دردسر می‌کشید؟

بخش های خاصی از نرم افزار هست که تا جای ممکن از تغییر دادنش فراری هستید؟

چطوری کد تمیز نوشتن رو یاد بگیریم؟

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

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

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

علت نوشتن این سری توسط من و خوندنش توسط شما فقط یک چیزه، تبدیل شدن به برنامه نویس بهتر.

به زودی اولین مقاله از سری برداشت های خودم از کتاب Clean Code رو توی همین بلاگ منتشر می‌کنم.