بازسازی کد (به انگلیسی: code refactoring) یک فرایند می باشد که طی آن، یک کدِ نوشته شده بدون آن که رفتار خارجی اش عوض شود، بازسازی می شود. به عبارتی دیگر، بازسازی کد به معنای تغییر یک سیستم نرم افزاری به منظور ارتقا و بهبود ساختار داخلی آن به صورتی که رفتار بیرونی آن تحت تأثیر قرار نگیرد، می باشد. اگر بخواهم دقیق تر بگوییم، بازسازی کد را می توان راهی برای منظم و تمیز کردن ساختار کد دانست. این کار برای جلوگیری از ایجاد باگ های نرم افزاری انجام می شود.
روش هایی که خاصیت انتزاعیِ کد (abstraction) را زیاد می کنند.
کپسوله سازی - مجبور کردنِ بقیه برای دسترسی به پارامتر یک کلاس از طریق توابع گیرنده و گذارنده.
کلی سازی نوع - کلی کردنِ نوع یک پارامتر برای افزایش اشتراک گذاریِ کد.
بازسازی کد رابطهٔ نزدیکی با بوی کد (code smell) دارد. برای مثال، متدی را در نظر بگیرید که بسیار بلند یا شبیه متد دیگری شده است. به کمک بازسازی کد می توان این مشکل ها را حل کرد و به عبارتی دیگر بوی کد را از بین برد. در حالتی که متد بسیار بلند است به دو متد یا بیشتر شکسته می شود و در حالتی که متد شبیه متد دیگری است، هر دو متد را با یک متد جایگزین می شوند.
به طور کلی بازسازی کد دارای دو فایده است.
قبل از انجام بازسازی کد بر روی یک تکه کد، می بایست یک سری آزمایش واحدِ خودکار (unit test) انجام شود. این کار برای مطمئن شدن از درست بودنِ کارکردِ تکه کد قبل از انجام بازسازی کد می باشد. اگر این آزمایش ها شکست بخورند، در حالت کلی ابتدا می بایست این آزمایش ها را رفع مشکل کرد؛ اگر این کار انجام نشود، تشخیص خطاهایی که به خاطر بازسازی کد درست شده اند از خطاهایی که قبلاً از بازسازی کد در کد وجود داشته اند دشوار می شود. بعد از بازسازی کد، آزمایش ها دوباره اجرا می شوند تا تائید شود که بازسازی کد خطای جدیدی را به وجود نیاورده است.
روش هایی که خاصیت انتزاعیِ کد (abstraction) را زیاد می کنند.
کپسوله سازی - مجبور کردنِ بقیه برای دسترسی به پارامتر یک کلاس از طریق توابع گیرنده و گذارنده.
کلی سازی نوع - کلی کردنِ نوع یک پارامتر برای افزایش اشتراک گذاریِ کد.
بازسازی کد رابطهٔ نزدیکی با بوی کد (code smell) دارد. برای مثال، متدی را در نظر بگیرید که بسیار بلند یا شبیه متد دیگری شده است. به کمک بازسازی کد می توان این مشکل ها را حل کرد و به عبارتی دیگر بوی کد را از بین برد. در حالتی که متد بسیار بلند است به دو متد یا بیشتر شکسته می شود و در حالتی که متد شبیه متد دیگری است، هر دو متد را با یک متد جایگزین می شوند.
به طور کلی بازسازی کد دارای دو فایده است.
قبل از انجام بازسازی کد بر روی یک تکه کد، می بایست یک سری آزمایش واحدِ خودکار (unit test) انجام شود. این کار برای مطمئن شدن از درست بودنِ کارکردِ تکه کد قبل از انجام بازسازی کد می باشد. اگر این آزمایش ها شکست بخورند، در حالت کلی ابتدا می بایست این آزمایش ها را رفع مشکل کرد؛ اگر این کار انجام نشود، تشخیص خطاهایی که به خاطر بازسازی کد درست شده اند از خطاهایی که قبلاً از بازسازی کد در کد وجود داشته اند دشوار می شود. بعد از بازسازی کد، آزمایش ها دوباره اجرا می شوند تا تائید شود که بازسازی کد خطای جدیدی را به وجود نیاورده است.
wiki: بازسازی کد