هزینه پنهان یک بازنویسی تمیز

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

به همین دلیل سازگاری با نسخه‌های قبلی را یک محدودیت درجه‌اول می‌دانم، نه یک مزاحمت. هدف حفظ همیشگی تمام اشتباهات تاریخی نیست؛ هدف این است که تغییر تا جای ممکن آگاهانه، قابل مشاهده و برگشت‌پذیر باشد.

قرارداد را حفظ کن، پشت آن را نوسازی کن

یک مسیر عملی نوسازی معمولاً با مستندسازی رفتار فعلی، تشخیص رفتارهای عمدی و ساخت یک مرز سازگاری پیرامون آن آغاز می‌شود. بعد از آن می‌توان بخش‌های داخلی را با ریسک بسیار کمتری تغییر داد.

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

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

وقتی سازگاری درست طراحی شده باشد، مهاجرت دیگر یک رویداد بزرگ و پرریسک نیست. تیم می‌تواند سرویس‌به‌سرویس، endpoint به endpoint یا قابلیت‌به‌قابلیت جلو برود. این انعطاف یک مزیت مهندسی مهم است.

سیستمی دارید که این بده‌بستان در آن مهم است؟

شروع گفت‌وگو ←