بسیاری از توسعهدهندگان تصور میکنند نوشتن کدهای پیچیده و استفاده از الگوهای سخت، نشانهی حرفهای بودن است. اما در دنیای واقعی و در پروژههای بزرگ، سادگی سختترین کاری است که یک برنامهنویس انجام میدهد. پیچیدگی، دشمن شماره یک نگهداری نرمافزار است.
در آخرین بخش از سری مقالات Clean Code، یاد میگیریم که چرا باید کدهای خود را تا حد ممکن ساده نگه داریم و چگونه پیچیدگیهای غیرضروری را حذف کنیم.
بخش اول: سادگی مقیاسپذیر است، پیچیدگی نه!
وقتی یک سیستم ساده طراحی میشود، اضافه کردن ویژگیهای جدید به آن راحت است. اما وقتی کد با پیچیدگیهای بیشازحد (Over-Engineering) گره میخورد، هر تغییر کوچک میتواند منجر به باگهای پیشبینی نشده در بخشهای دیگر شود.
تفاوت نگاه ساده و پیچیده:
- نگاه پیچیده: ساختن یک زیرساخت عظیم برای قابلیتی که شاید در آینده نیاز شود.
- نگاه Clean Code: پیادهسازی سادهترین راهحل ممکن که نیاز فعلی را به بهترین شکل برطرف کند (اصل YAGNI - You Ain’t Gonna Need It).
بخش دوم: تکنیکهای سادهسازی کد
چگونه کدی بنویسیم که همه (حتی خودمان در 6 ماه آینده) آن را بفهمند؟
- حذف کدهای مرده (Dead Code): اگر تابع یا متغیری دیگر استفاده نمیشود، آن را پاک کنید. کامنت کردن کد کافی نیست؛ سیستم کنترل نسخه (Git) تاریخچه را نگه میدارد.
- پرهیز از تودرتو کردن (Deep Nesting): استفاده از
ifهای تودرتو خوانایی را به شدت کاهش میدهد. به جای آن از Guard Clauses استفاده کنید.
// روش پیچیده و تودرتو
if (user != null) {
if (user.IsActive) {
if (order.Amount > 0) {
Process(order);
}
}
}
// روش تمیز (Guard Clause)
if (user == null || !user.IsActive || order.Amount <= 0) return;
Process(order);
در روش دوم، کد بسیار خطیتر و خواناتر شده است و ذهن برنامهنویس درگیر شرطهای تو در تو نمیشود.
بخش سوم: بازنویسی (Refactoring) مستمر
کد تمیز محصول یک بار نوشتن نیست، بلکه نتیجهی بازنویسیهای مداوم است. هر بار که برای رفع یک باگ یا افزودن ویژگی به سراغ کدی میروید، سعی کنید آن را کمی تمیزتر از قبل رها کنید (قانون پیشاهنگی).
«کدنویسی تمیز به معنای حذف کردن است، نه اضافه کردن. وقتی دیگر چیزی برای حذف کردن وجود نداشته باشد، کد شما به کمال رسیده است.»
نتیجهگیری نهایی مجموعه مقالات
ما در این سری مقالات از نامگذاری و توابع شروع کردیم، از میان کامنتها و اصول SRP گذشتیم، به مدیریت روابط اشیاء رسیدیم و در نهایت به سادگی ختم کردیم. رعایت این اصول در پروژههای Enterprise، تفاوت بین یک سیستم پایدار و یک سیستم در حال سقوط را رقم میزند.
فراموش نکنید که Clean Code یک مقصد نیست، بلکه یک فرهنگ و مهارت است که با تمرین روزانه به دست میآید. امیدوارم این مجموعه مقالات در مسیر تبدیل شدن به یک توسعهدهنده حرفهایتر به شما کمک کرده باشد.