بازسازی کد یا Refactoring، یکی از روالهای بسیار مهم در حفظ کیفیت نرم افزار است. انجام به موقع و مداوم این روال در یک پروژه نرم افزاری، اثرات بلند مدت بسیار مثبتی را برای آن خواهد داشت. این نوشتار مقدمه کوتاهی بر مفاهیم ابتدایی و سوالاتی مهم در این زمینه است.
تعریف بازسازی کد
از نظر لغوی Refactoring به معنی «بازسازی» است و در منابع مهندسی نرم افزار، بازسازی کد به صورت زیر تعریف شده است:
بازسازی ساختار درونی یک نرم افزار که باعث سهولت در درک آن و سادگی نگهداری آن میشود، بدون تغییر رفتار بیرونی آن
چند نکته در تعریف بالا قابل توجه است:
- Refactoring بازسازی است، نه بازنویسی
- بازسازی مربوط به ساختار درونی یک نرم افزار است؛ نه رفتاری که مشتریان از یک نرم افزار یا کامپوننت انتظار دارند
- حاصل بازسازی باید سهولت درک کد و سادگی نگهداری آن باشد
چرا کد را بازسازی کنیم؟
ریفکتورینگ راهحل تمامی مشکلات موجود در توسعه نرم افزار نیست؛ ولی میتواند ابزار قویای برای حل بخشی از مشکلات ناشی از طراحی و کد نویسی بد باشد. بارزترین کمکهایی که بازسازی کد به توسعه نرم افزار میکند به صورت زیر هستند:
1- طراحی نرم افزار را بهبود میبخشد
زمانیکه کد به طور منظم بازسازی نشود، طراحی کلی آن رو به زوال خواهد رفت. هنگام ایجاد تغییر در بخشی از کد، ممکن است تنها هدف کوتاه مدت درست کار کردن آن بخش، مد نظر برنامه نویس باشد و به دلایل مختلفی مانند کمبود زمان، به نتایج بلند مدت آن تغییر توجه نشود. یکی از مزایای بازسازی کد، ایجاد تعادل بین تاثیرات کوتاه مدت و تاثیرات بلند مدت اعمال تغییرات بر روی کد است؛ به طوری که طراحی و تفکر کلی کد نویسی یک سیستم نرم افزاری، رو به بهبود برود. بهبود طراحی نرم افزار به درک کدهای آن، ایجاد آسانتر تغییرات و افزودن امکانات جدید، کمک بسیاری خواهد کرد.
2- درک کد را آسانتر میکند
یکی از مزیتهای کد خوب، درک آسان آن توسط سایر افراد است. هنگام بازسازی کد، با کدی مواجه هستیم که کار میکند، ولی نظم و طراحی درستی ندارد. درک آسان کد، یکی از کلیدیترین نکات جهت سهولت نگهداری یک نرم افزار است.
3- به یافتن خطاها کمک میکند
یافتن تمامی باگها در زمان نوشتن یک کد، به نظر میرسد غیر ممکن باشد. اما اقدام به بازسازی کد میتواند قدمی باشد برای بازنگری و بهبود ساختار آن. زمانیکه ساختار کد خواناتر و منظمتر شد، یافتن برخی باگها نیز آسانتر خواهند شد.
4- سرعت توسعه را بالا میبرد
زمانیکه طراحی کد درست نباشد، ممکن است برای مدت کوتاهی قادر به افزودن امکانات محدودی باشیم. ولی هر چه بیشتر پیش برویم و طراحی کد را بازسازی نکنیم، سرعت عمل در اعمال تغییرات، رفع خطاها و افزودن امکانات کاهش خواهد یافت و قطعا به زمانی خواهیم رسید که با کدی غیر قابل نگهداری مواجه خواهیم بود.
چه زمانی کد را بازسازی کنیم؟
روشهای مختلفی برای زمان بندی انجام بازسازی کد مطرح است. یکی از پرکاربردترین زمان بندیها برای انجام بازسازی کد به صورت زیر میباشد:
- زمانیکه امکان جدیدی اضافه می شود
- زمانیکه باگ یا اشکالی، رفع می شود
- زمان بازبینی کد یا Code review