مقدمه ای بر بازسازی کد (Refactoring)

بازسازی کد یا Refactoring یکی از روال های بسیار مهم در حفظ کیفیت نرم افزار است. انجام به موقع و مداوم این روال در یک پروژه نرم افزاری اثرات بلند مدت بسیار مثبتی برای ان خواهد داشت. این نوشتار مقدمه کوتاهی در جهت مفاهیم و سوالات مهم در این زمینه است.

تعریف بازسازی کد

از نظر لغوی Refactoring به “بازسازی” ترجمه شده و در منابع مهندسی نرم افزار، بازسازی کد به صورت زیر تعریف شده است.

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

چند نکته در تعریف بالا قابل توجه است:

  • Refactoring بازسازی است، نه دوباره نویسی
  • بازسازی مربوط به ساختار درونی یک نرم افزار است نه رفتاری که مشتریان از یک نرم افزار یا کامپوننت انتظار دارند
  • حاصل بازسازی کردن باید سهولت در درک کد و سادگی نگهداری آن باشد

چرا کد را بازسازی کنیم؟

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

۱طراحی نرم افزار را بهبود می بخشد

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

۲درک کد را آسان تر می کند

یکی از مزیت های کد خوب درک آسان آن توسط افراد است. هنگام بازسازی کد، با کدی مواجه هستیم که کار می کند ولی نظم و طراحی درستی ندارد. درک آسان کد یکی از کلیدی ترین نکات جهت سهولت نگهداری یک نرم افزار است.

۳به یافتن خطاها کمک می کند

یافتن تمامی باگ ها در زمان نوشتن یک کد به نظر می رسد غیر ممکن باشد. اما اقدام به بازسازی کد می تواند قدمی باشد برای بازنگری و بهبود ساختار آن، زمانی که ساختار کد خواناتر و منظم تر شد یافتن برخی باگ ها نیز آسان تر خواهند شد.

۴سرعت توسعه را بالا می برد

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

چه زمانی کد را بازسازی کنیم؟

روش های مختلفی برای زمان بندی انجام بازسازی کد مطرح است. یکی از پرکاربردترین زمان بندی ها برای انجام بازسازی کد به صورت زیر می باشد:

  • زمانی که امکان جدیدی اضافه می شود 
  • زمانی که باگ یا اشکالی رفع می شود 
  • زمان بازبینی کد یا Code review

برای مطالعه بیشتر از این زمینه می توانید به صفحه “Refactoring در عمل” مراجعه نمایید.