تکرار کد ارزانتر از انتزاعهای اشتباه است
بیشتر توسعهدهندگان اصل DRY را در مراحل اولیه یاد میگیرند. یعنی: خود را تکرار نکنید (Do Not Repeat Yourself).
این قاعده منطقی است؛ از بروز خطاها جلوگیری میکند و در زمان صرفهجویی میکند.
اما بسیاری از توسعهدهندگان این قاعده را بیش از حد سختگیرانه اجرا میکنند. آنها سعی میکنند همه چیز را در یک تابع یا کلاس ادغام کنند. این کار منجر به مهندسی بیش از حد (over-engineering) میشود.
وقتی دو منطق متفاوت را به زور در قالب یک انتزاع (abstraction) قرار میدهید، مشکل ایجاد میکنید. پیچیدگی را بالا میبرید و خواندن کد را دشوار میکنید.
یک انتزاع اشتباه، هزینهای بسیار بیشتر از مقداری تکرار کد دارد.
اگر کد را تکرار کنید، دقیقاً میدانید منطق کجا قرار دارد. اگر نیاز به تغییر بخشی داشته باشید، همانجا آن را تغییر میدهید.
اما اگر از یک انتزاع بد استفاده کنید، باید هر چیزی را که به آن متصل است تغییر دهید. در این صورت ریسک خراب شدن قابلیتهایی را میپذیرید که هیچ ارتباطی با وظیفه فعلی شما ندارند.
برای حفظ امنیت (کد) این قوانین را دنبال کنید:
- کد را برای همان وظیفهای که در حال انجام آن هستید بنویسید.
- قبل از انتزاع، منتظر بمانید تا یک الگو سه بار ظاهر شود.
- خوانایی را بر صرفهجویی در چند خط کد اولویت دهید.
- بپذیرید که مقداری تکرار کد میتواند مفید باشد.
از تلاش برای بینقص کردن هر خط کد دست بردارید. تمرکز خود را روی آسان کردن تغییرات در کد بگذارید.