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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

بررسی Bad code smell ها

مدتی پیش نگارش سری مطالبی در موضوع بررسی Bad code smell ها را شروع کردم. این تلاش احتمالا اولین تلاش برای آموزش تشخیص، بررسی و رفع Bad code smell ها با استفاده از مثال های روزمره، به زبان فارسی و با این حجم از جزییات بوده است.

در این سری مطالب Bad code smell هایی که بیشترین تکرار را داشته اند مورد بررسی قرار گرفته اند. تشخیص Bad code smell ها سنگ بنای بیشتر فعالیت های مربوط به اشکال زدایی طراحی یک نرم افزار است. به طوری که با آموختن این کدهای بد بو به طوری چشم توسعه دهنده نسبت به کد خود بازتر شده و با اگاهی بیشتری کد نگریسته خواهد شد.

امیدوارم این سری مطالب برای دوستانی که با مطالعه مطالب فارسی راحتی بیشتری دارند مفید واقع شود.

پیشنهاد می کنم حتما طبقه بندی Bad code smell ها را مطالعه کنید. زیرا دسته بندی ذهنی مناسبی برای یادگیری آنها ایجاد خواهد کرد.

برای در جریان بودن از تغییرات در این سری مطالب لینک نقشه راه مربوط به این سری مطالب در سایت dotnettips.info مفید خواهد بود.


ویرایش شده در تاریخ ۱۳۹۶/۵/۲۹: افزودن مطلبی جدید به لیست مطالب