تکرار کد در مقابل انتزاع‌های نادرست

توسعه‌دهندگان اغلب با یک انتخاب دشوار روبرو هستند.

شما باید بین اصل «خودت را تکرار نکن» (Don't Repeat Yourself) یا اجازه دادن به مقداری تکرار کد، یکی را انتخاب کنید.

DRY یکی از قوانین اصلی در طراحی نرم‌افزار است. اما تلاش بیش از حد برای رعایت آن، مشکل جدیدی ایجاد می‌کند: شما یک انتزاع نادرست (wrong abstraction) می‌سازید.

یک انتزاع نادرست، هزینه‌ای بسیار بیشتر از کد تکراری دارد.

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

اما انتزاع زودهنگام (premature abstraction)، سرعت پروژه را از بین می‌برد و قابلیت نگهداری کد را مختل می‌کند.

وقتی خیلی زود شروع به انتزاع می‌کنید، با این مشکلات روبرو می‌شوید:

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

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

برای مشکلی که هنوز به‌طور کامل آن را درک نکرده‌اید، یک راهکار عمومی (generic solution) نسازید. صبر کنید تا الگو کاملاً مشخص شود.

منبع: https://dev.to/kelvin_kariuki_20f4bec616/developer-take-on-code-duplication-is-far-cheaper-than-the-wrong-abstraction-2016-2k3n