تا اینجا فهمیدیم کد تمیز چیه و چه اصولی داره. اما دونستن این اصول بهتنهایی کافی نیست — باید بدونیم چه چیزایی میتونن ما رو از نوشتن کد تمیز باز دارن.
این «دشمنان» رو نباید دقیقاً به چشم دشمن ببینید. بهتره بهشون بهعنوان عواملی نگاه کنید که آرومآروم کد تمیز رو تحلیل میبرن.

۱. جاوااسکریپت
بدترین ویژگی جاوااسکریپت، همزمان بهترینشه. این زبان بهشکل عجیبی همهجا هست و با سرعت زیادی رشد کرده.
جاوااسکریپت خیلی انعطافپذیره — میخواید شیگرا بنویسید؟ تابعی؟ نمونهای؟ همه رو پوشش میده. همین انعطاف باعث شده ورود بهش آسون باشه، ولی همین انعطاف باعث شده که در هزار جهت مختلف کشیده بشه. امروز با انبوهی از فریمورکها، کتابخانهها، و ابزارهای build مواجهیم و انتخاب «راه درست» تقریباً غیرممکن به نظر میرسه.
اگه این زبان رو درست بهکار ببرید، با بیانگریاش شگفتزده میشید. و اگه وقت و تلاش بذارید، میتونید باهاش کدی بنویسید که از نظر قابل اطمینان بودن با هر زبان دیگهای برابری کنه.
۲. مدیریت
کد تمیز فقط به سینتکس مربوط نیست؛ به فرهنگی هم بستگی داره که اون رو پرورش میده. وقتی مدیریت رو «دشمن» مینامیم، منظور این نیست که مدیرها مقصرن — مشکل اصلی بعضی رویههای فرهنگیه.
فشار برای ارسال کد
ددلاینها از نگاه مدیر منطقی به نظر میرسن، ولی از نگاه کسی که روی پروژه کار میکنه، اغلب یعنی اجبار به مصالحه. اولین چیزی که قربانی میشه، کیفیت کده — مستندات نوشته نمیشن، تستها حذف میشن، معماری نادیده گرفته میشه. نتیجه؟ کد پر از باگ، کاربران ناراضی، و توسعهدهندگان فرسوده.
راهحل اینه که تعادلی معقول بین سرعت ارسال و بدهی تکنیکال برقرار بشه. چند راهکار ساده:
بدون تست، هیچ ویژگی یا باگفیکسی ارسال نکنید
بدهی تکنیکال رو بهطور منظم پرداخت کنید — مثلاً یه بار در هفته همه روی بهبود کدبیس تمرکز کنن
با ذینفعان صادقانه ارتباط برقرار کنید
معیارهای بد
یه مدیر غیرفنی ممکنه نگران تعداد خطوط کد یا فیچرهای ارسالشده باشه. این معیارها گمراهکنندهان. یه توسعهدهنده ممکنه ده روز وقت بذاره تا یه باگ حیاتی رو با یه خط تغییر حل کنه — آیا این بیبهرهوریه؟
قانون گودهارت میگه:
«وقتی یه معیار به هدف تبدیل میشه، دیگه معیار خوبی نیست.»
بهجای شمارش خطوط کد، از توسعهدهندهها بپرسید چی سرعتشون رو کم کرده. بهجای شمارش فیچرها، کیفیت و تأثیر هر فیچر روی کاربر رو بسنجید.
فقدان مالکیت
مالکیت یعنی یه فرد یا تیم احساس مسئولیت واقعی نسبت به بخشی از کد داشته باشه. بدون مالکیت، همهچیز آرومآروم فرو میریزه. با مالکیت درست، کد پایش میشه و با یه چشمانداز منسجم رشد میکنه.
فقط مراقب مالکیت افراطی باشید — غرور بیش از حد میتونه به فرهنگی لجوجانه تبدیل بشه.
۳. خودمان
احساس غرور نسبت به کار، طبیعی و حتی لازمه. اما اگه کنترل نشه، ممکنه به جایی برسیم که کد رو برای تحتتأثیر قرار دادن دیگران مینویسیم — نه برای اینکه خوانا یا نگهداریپذیر باشه.
خودنمایی با سینتکس
مثلاً برای گرد کردن اعشار به پایین، بهجای:

از عملگر بیتی استفاده میکنیم:

یا مثال دیگه — استفاده از عملگرهای منطقی بهجای if:

کد یعنی انتقال قصد — و ارتباط خوب به شنونده هم مربوطه، نه فقط گوینده.
نظرات لجوجانه
وقتی دو نفر از تیم هر کدوم یه ابزار متفاوت رو پیشنهاد میدن و هیچکدوم حاضر به انعطاف نیستن، نتیجه یه کدبیس بلاتکلیفه. اگه هر دو از خودمحوری بیرون بیان و دیدگاه دیگری رو واقعاً بشنوند، رسیدن به توافق خیلی سادهتره.
سندرم ایمپاستر
احساس «واقعاً لایق این جایگاه نیستم» در دنیای فناوری خیلی شایعه. این احساس باعث میشه در تصمیمگیریها تردید کنیم یا نگرانیهای مهم رو با تیم در میان نذاریم.
حقیقت اینه: هیچکس همهچیز رو بلد نیست. تنوع دانش اعضای یه تیمه که موفقیت پروژه رو رقم میزنه.
۴. کارگو کالت
در اوایل قرن بیستم، برخی فرهنگهای ملانزی شروع به ساختن باند فرود از چوب و گل کردند — به این امید که هواپیماهای غربی برایشان کالا بیاورند. اشتباهشون اینجا بود که «باند فرود» رو علت رسیدن کالا میدونستن، نه وسیلهای برای هواپیماها.
در برنامهنویسی، کارگو کالت یعنی کپی کردن الگوها بدون درک واقعی هدف و عملکردشون.
کارگو کالت در کد
یه برنامهنویس میخواد یه route جدید به سرور اضافه کنه. این کد رو توی فایل میبینه:

و برای route جدیدش اینو مینویسه:

اشتباه! کد اول یه middleware برای کنترل دسترسی بود. کد درست اینه:

خطرناکترین نوع کارگو کالت اینه که وقتی وارد یه کدبیس میشیم، ناخودآگاه از الگوهای موجود پیروی میکنیم — حتی اگه اشتباه باشن — چون فرض میکنیم «حتماً دلیلی داشته.»
کارگو کالت در ابزارها
هر ماه یه فریمورک جدید با هیاهوی زیاد معرفی میشه. قبل از انتخاب هر ابزار جدید، این سؤالها رو بپرسید:
آیا برای این مشکل خاص مناسبه؟
آیا درست کار میکنه و در آینده هم کار خواهد کرد؟
آیا ساده و مستنده؟
آیا با کدبیس موجود خوب ادغام میشه؟
جمعبندی
کد تمیز فقط یه ویژگی کد نیست — یه فرهنگه که باید هم در سطح سازمان و هم در سطح فردی پرورش داده بشه. جاوااسکریپت، فشارهای مدیریتی، غرور شخصی، و کپیکاری کورکورانه — هر کدوم به شکل خودشون میتونن این فرهنگ رو تضعیف کنن.