در برنامهنویسی به فرایندی سیستماتیک که در آن بدون آنکه تغییری در عملیات سیستم ایجاد کنیم، یک کد کثیف و آشفته را به کدی تمیز، ساده و خوانا تبدیل کنیم، Refactoring گفته میشود. اصولاً ریفکتور کردن بدون داشتن آزمونهای واحدی (Unit Test) جامع که عدم تغییر عملیات سیستم را تضمین کند، کار خطرناکی است. از این نظر به هر نوع تغییر کدی که بدون داشتن آزمون واحد متناظر با آن تغییرات صورت پذیرد نمیتوان ریفکتور کردن، گفت.
از سوی دیگر در توسعه مبتنی بر آزمون Test First Developement و به خصوص TDD-Test Driven Development یکی از مراحل توسعه نرم افزار ریفکتور کردن کد است، و جزیی جدایی ناپذیر از فرایند توسعه در نظر گرفته میشود. به این صورت که فرایند توسعه به سه مرحله که هریک دیگری را دنبال میکند تقسیم میشود.
ممکن است در فرایند توسعه نرم افزار، افراد تمایلی به ریفکتور کردن نداشته باشند به خصوص زمانیکه که باید فیچر خاصی را در ضرب العجل مشخصی تحویل دهند یا باگهایی در سیستم وجود دارند که رفع آنها در اولویت است. مشکل درست همینجاست، اگر تیم توسعه زودتر به فکر بهبود کد فعلی نباشد به زودی با کدهایی مواجه میشود که دیگر قابل بهبود نیستند و در نتیجه اولین راهی که به نظر افراد میرسد از نو شروع کردن است. برای پیشگیری از این مشکل باید نوشتن آزمون واحد و ریفکتور کردن جزیی جدایی ناپذیر از فرایند توسعه باشد.
ریفکتور کردن را میتوان به قدمهای کوچک تقسیم کرد و پس از هر تغییر در کد، آزمونهای واحد متناظر آن قطعه کد باید اجرا شوند. با این کار همواره از عدم تغییر عملیات سیستم به واسطه تغییر جانبی حاصل از ریفکتور کردن در امان خواهیم ماند.
در پست بعدی چگونگی ریفکتور کردن را مرور خواهیم کرد