داستان از یه مریضی، وسط یه پروژه سنگین شروع شد. دوهفته‌ای که نتونستم کار کنم و همکارم باید پروژه رو جلو می‌برد. و بعد از دوهفته‌ای که برگشتم و با وجود کلی تسک، هیچ تغییری تو کامپوننتای خودم ندیدم. چرا؟ چون کدا واضح نبودن و بعضی کامپوننتا به - خط کد میرسیدن: ) دقیقا همون موقع بود که تصمیم گرفتم راجع به Clean Code کتاب بخونم و تحقیق کنم. و اونجا بود که لذت کدزدن و معنای واقعی development رو درک کردم: ) خیلیا میگن کد من تمیزه و مشکلی نداره و غیره و غیره. و واقعا توی خودشون نیازی به خوندن این قوانین نمی‌بینن اگر کسی بدون توجه به قوانینی که ثابت شدست همچین حرفی بزنه، قطعا اشتباهه و احتمالا دود کد بد تو چشم همچین فردی نرفته! شاید چون هدف این افراد از کد زدن، فقط و فقط"پیاده‌سازی" هست و وقتی به این مرحله برسن، شاد و خندان وارد تیکه‌های بعدی پروژه میشن در حالی که نمیدونن تو آینده نزدیک، قراره چه اوضاعی پیش بیاد? برای همچین تفکری، یه نقل قول معروف از Martin Fowler داریم که میگه: می‌دونستی اگه if , else , while تو کدات، بیشتر از یه خط باشه، باعث بی‌نظمی شده؟ می‌دونستی اگه فانکشنت بیشتر از خطه، یعنی از قوانین clean code پیروی نکردی؟ میدونستی - درصد کامنتایی که وسط پروژت داری، فقط و فقط کداتو شلوغ کرده؟ میدونستی فانکشنی که بیشتر از یه کار انجام بده، از اساس غلطه؟ (مثلا فکر کن یه کامپوننت توی فرانت‌اند دستت داری که عمل لایک رو انجام میده. حالا وقتی روی لایکه کلیک شد، تو فانکشنت هم بیای UI رو عوض کنی و یه دونه به تعداد لایکا اضافه کنی، و هم بیای و به API ریکویست بزنی. غلطه?) پس اگه فانکشنت داره تو argument ها، flag میگیره، شک نکن اون تیکه کد تمیز نیست! چون داره دوتا کار انجام میده و باید به دوتا فانکشن تبدیل شه! میدونستی اگه فانکشنت بیشتر از دوتا argument میگیره، باعث گیجی خواننده کدات میشه؟ حتی خود دوتا argument هم شرط و شروط داره? میدونستی اگه یه تیکه از کدتو داری کپی میکنی که با تغییر یه قسمتیش، دوباره استفادش کنی، احتمال زیاد داری اشتباه میزنی؟ و کلی میدونستی‌های دیگه که اگر این پست ری‌اکشن خوبی بگیره، براتون جدا جدا مینویسمشون: ) قرار نیست حکایت اون کلاغه باشیم که اومد راه‌رفتن کبک رو یاد بگیره، راه‌رفتن خودشم یادش رفت! قراره هررر سبکی که برا کدزدن داریم رو دقیقا به همون شکل حفظ کنیم. فقط و فقط اولش روی"اجرا کردن" عملکرد مورد نظرمون تمرکز می‌کنیم. دقیقا مثل قبل! اصلا بیا دو دیقه از بحث کد جدا بشیم و فرض کنیم می‌خوایم مقاله بنویسیم اولین کاری که میکنی اینه که هرچی از ذهنت بیرون میاد رو می‌نویسی. چیزی که تو ذهنت بود رو تو مقاله اوردی؟ حالا وقت ویرایش مقاله‌ست! وقت حاشیه خوشگل دادن و اصلاح جمله‌های طولانی و علایم نگارشی و غیره و غیره‌ست یه بار دیگه تیکه بالا رو بخون و این بار به جای مقاله‌نویسی فکر کن داری کد میزنی به همین سادگی و با هزینه زمانی خیلی کم ولی نجات‌دهنده! شککک نکن! تا حالا چندبار برات اتفاق افتاده تو کدای خودتم گم بشی؟ و انقدددر فانکشنا تو هم تو هم بشه که برای پیدا کردن یه فانکشن ساده، کلی اسکرول کنی و به خاطر اسم variable ها (که اگه فرصت شد تو پستای بعدی کامل توضیح میدمشون) ، حتی با سرچ هم نتونی پیداش کنی؟ کافیه - هفته بگذره و بخوایم به کدامون برگردیم خودمونم متوجه نمیشیم! حالا فکر کن یکی دیگه میخواد اونا رو بخونه و توسعه‌شون بده? و اگر بخواد بعد از مدتی به اون تیکه کد feature اضافه بشه یا چیزیش تغییر کنه، واقعا ایجاد میشه! ما قراره کدی بزنیم که حتی کسی که ماه از hello world ش میگذره، وقتی به کدای پروژمون نگاه میکنه، بفهمه قضیه از چه قراره، حتی اگه تخصصی باشن قوانین خیلی راحتن و زمان زیادی ازت نمی‌گیرن به امید تمیزی کدامون: )