حتما تا به حال در مباحث پیشرفته ی برنامه نویسی با عبارت کد تمیز یا Clean code مواجه شده اید.

اما سوال این است که چرا و چگونه کد تمیز بنویسیم؟ در این پست به چرایی و در پست های بعد به چگونگی نوشتن کد تمیز می پردازم.

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

http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882

چرا کد تمیز؟

به طور کلی می توان فواید زیر را برای کد تمیز بر شمرد:

-maintain یا نگهداشت آن ساده تر است 

-یافتن bug ها ساده تر است

-bug ها کمتر هستند

-فهم آن ساده تر است

-...

یک سناریوی آشنا!

زمان تحویل پروژه نزدیک است، از طرف مدیر پروژه فشار برای اتمام پروژه زیاد است، محصول باید سریعتر وارد بازار شود و .... چنین دلایلی باعث نوشتن کد های کثیف می شود. بطور دقیق گفته می شود که کدهایی با درهم ریختگی یا mess های فراوان نوشته می شود.

در چنین پروژه های با افزایش feature های پروژه این در هم ریختگی ها بیشتر می شود تا جایی که کد غیر قابل مدیریت می شود. اینجاست که گفته می شود bad code شرکت را به مرور ورشکست می کند!!

با بهم ریختگی کد با گذر زمان بهره وری یا productivity تیم رو به کاهش می رود تا جایی که به 0 میل می کند. مدیران در چنین مراحلی سعی می کنند با افزایش feature ها بهره وری تیم را بالا ببرند اما اینکار به نتیجه نمی رسد. چون با این کار درهم ریختگی کدها بیشتر و بیشتر می شود. تیم به هم می ریزد و develop روی کدهای موجود امکان ادامه ندارد در نتیجه درخواست طراحی یک سیستم جدید داده می شود.

مدیران نمی توانند تمام منابع را به طراحی سیستم جدید اختصاص دهند و همچنین نمی توانند انکار کنند که سیستم موجود قابل ادامه نیست پس یک تیم جدید انتخاب می شود (TIGER team). همه افراد دوست دارند در این تیم باشند چون پروژه ی آن green field است.

tiger team پروژه ی خوبی تولید می کند اما فقط برای خودش، و بقیه مجبور به کار با سیستم قبلی اند. سیستم جدید باید تمام ویژگی های سیستم قبلی را داشته باشد و علاوه بر آن باید تمام تغییرات ممتد سیستم قدیمی را نیز پوشش دهد.

دو تیم دچار رقابت می شوند و این رقابت مشکلات خود را دارد. ممکن است انتقال سیستم جدید چندین سال مثلا 10 سال طول بکشد. در این مدت اعضای اصلی احتمالا رفته اند و اعضای جدید در خواست طراحی جدید دارند.....

پس طبق آنچه گفته شد clean code یک موضوع cost effective نیست، بلکه مسیله ایست برای بقای حرفه ای پروژه.

پی نوشت:

TIGER team: سر آمد  Totally Integrated Group of Expert Resources است. در واقع جمعی از خبرگان برای تحقیق و حل یک مشکل فنی.

green field project: پروژه ای که محدود و مقید به پروژه های قبلی نیست.