Skip to content

Latest commit

 

History

History
53 lines (36 loc) · 4.54 KB

legacy-code.md

File metadata and controls

53 lines (36 loc) · 4.54 KB

کد Legacy کدیه که تست نداره!

نباید یادمون بره کد موروثی، یک ارزش کسب‌وکاری داره (یه کاری رو الآن داره درست انجام می‌ده!) کد جدید تضمینی نداره که همون کار رو انجام بده :))

چرا با کد موروثی مشکل داریم؟

  • چون «هر کدی که خودمون ننوشته باشیم بده»! چون یک اتفاقی اونجا داره میفته که من نمی‌فهممش، چون من ننوشتمش و کسی هم نیست کمک کنه. بعضی مواقع هم انقدری مستندات زیاده که باز کمکی نمی‌کنه!
  • تغییر کد موروثی سخته، و نیاز به صبر داره و ما آدم صبوری نیستیم.
  • «همه دارن با cloud و چیزای خفن کار می‌کنن، ما داریم با کدهای قدیمی سروکله می‌زنیم»

برای دور ریختن کد، باید به این سؤال جواب بدیم که «چرا؟». اینجا در مورد این صحبت نمی‌کنیم که محصول مرده یا دیگه ارزش کسب‌وکاری نداره (مثل ربات تلگرام و فیلتر شدن تلگرام) و به این خاطر کد رو می‌ریزیم دور.

چه کار بکنیم؟

  1. اگر source control نداره، اضافه کنیم!
  2. کم کم کد رو یاد بگیریم: فرصتیه برای حل مسئله‌ای که از جنس الگوریتم نیست؛‌ باز کردن کلاف سردر گم. ممکنه توی رزومه خیلی منعکس نشه، اما مهارتیه که همه بهش نیاز داریم «اگر نکشدت، قوی‌ترت می‌کنه» :))
  3. حذف قسمت‌های بلااستفاده (= خونه تکونی)؛ این بهم نشون می‌ده یک دور در کد زده‌ام.
  4. تصمیم‌گیری در مورد اینکه «ارزش وقت گذاشتن برای یک دور دیگر داره؟»
  5. از اینجا به بعد مسیر مستقیم نیست، یک سری روش داریم:
    1. نوشتن characteristic test: ثبت رفتار فعلی
    2. پیشاهنگی: وارد هر جایی عبور می‌شی، موقع خروج تمیزتر باشه
    3. از یک گوشه‌ای شروع به بازنویسی می‌کنیم: آن قسمت را از کد جدا کرده و تر و تمیز می‌نویسیم (به بقیه‌اش کاری نداریم!)؛ در کوتاه مدت کارمون سخت‌تر میشه (نمودار پیش‌رفت تخت یا نزولی میشه)
    4. بعد از اینکه تست اضافه کردیم، بریم سمت CI. لازم نیست چیز پیچیده‌ای باشه؛ بیلد کنیم و تست‌ها اجرا بشه تا مطمئن بشیم چیزی رو خراب نکردیم.
    5. تکرار مراحل بالا! (ترتیب نداره)
  6. با بهبود مستمر، نگذاریم کد پیر بشه؛ کسی از اینکه کرنل لینوکس یا شاهنامه بهش ارث برسه ناراحت نمی‌شه

سؤال و جواب

سؤال: از اول به بهترین روش کد بزنیم یا اسپاگتی به نتیجه برسیم و بعد درست کنیم؟

جواب:

ایده‌آل یه چیزیه تو ذهن ما فقط برای اذیت کردن ما :))

همیشه محدودیت زمان و انرژی و… داریم، باید به نتیجه برسیم، اما نباید یادمون بره که ممکنه لازمه نگه داریش کنیم.

انقدر کم هزینه بنویس که فردا دلت نسوزه دور بریزی! اگر مشتری‌هاش زیاد شد، باید یک دور دیگه بازنویسی‌ش کرد.

طبق بررسی‌های انجام شده، میزان خط‌های پاک شده ۱۰ برابر خط‌های اضافه شده است!

تصویر ایده‌آل رو باید نگه داشت، اما در عمل باید بهش توجهی نکرد. در بهبودهای کوچک به سمت این ایده‌آل باید حرکت کنیم.

سؤال: بدهی فنی رو چطور کنترل کنیم؟

جواب: همیشه بخشی از زمان رو بهش اختصاص بدین؛ مثلا ۱۰-۲۰ درصد.

کلمات قصار

  • ایده‌آل یه چیزیه تو ذهن ما فقط برای اذیت کردن ما
  • کد بد (Legacy) کدیه که تست نداره!
  • کد خوب کدیه که راحت می‌شه ریفکتورش کرد
  • optimization تا زمانی که تبدیل به درد نشده بیهوده است