refactoring به روش های اعمال تغییر (اصلاح یا افزودن قابلیت) در ساختار کدهای موجود می گویند، بصورتی که پس از اعمال تغییر کدهای جدید حاوی error نباشند (سینتکس و کامپایل) و همچنین functionality نرم افزار تغییر نکرده باشد.
معمولا refactoring بدلایل زیر باید اتفاق بیفتد:
-
بهبود درکد برای کاهش پیچیدگی و بالا بردن خوانایی کد (مانند تغییر نام متغییر ها).
-
افزودن قابلیت های جدید به کد (مانند تغییر امضای متد ها)
-
بهبود طراحی سیستم (جدا کردن قسمتی از یک کلاس و ایجاد کلاس جدید برای آن قسمت)
معمولا IDE های زبان های برنامه نویسی مختلف امکاناتی برای اعمال refactoring در کد را در اختیار برنامه نویسان قرار می دهند.
refactoring وابسته به زبان برنامه نویسی خاصی نیست و برای موارد فوق الذکر می تواند در هر زبان برنامه نویسی اتفاق بیوفتد.
در فرایند های توسعه نرم افزار agile از refactoring در پیاده سازی سیستم استفاده زیادی می شود. چون در فرایند های agile تحویل نرم افزار زود به زود انجام می شود بنابراین احتمال تغییر در کدهای نوشته شده و طراحی زیاد وجود دارد به همین دلیل refactoring ابزاری مناسب برای اعمال سریع این تغییرات در نرم افزار است.