بخش اعظمی از refactoring شامل اصلاح و بازآرایی متد ها است. در بیشتر موارد ، متدهای بیش از حد طولانی ریشه همه مشکلات هستند. مبهم بودن کد موجود در این متد ها منطق اجرا را پنهان می کند و درک متد را بسیار دشوار کرده و تغییر آن را سخت تر می کند.
تکنیک های refactoring در این گروه ساده سازی متد ها ، حذف کدهای تکراری و زمینه سازی برای پیشرفت های آینده است.
Extract Method
Inline Method
Extract Variable
Inline Temp
Replace Temp with Query
Split Temporary Variable
Remove Assignments to Parameters
Replace Method with Method Object
Substitute Algorithm
انتقال متد ها و… بین کلاسها
این تکنیک های refactoring نشان می دهد که چگونه می توان با خیال راحت فانکشنالیتی ها را بین کلاس ها را جابجا کرد ، کلاس های جدید ایجاد کرد و جزئیات پیاده سازی را از دسترسی عمومی پنهان کرد
Move Method
Move Field
Extract Class
Inline Class
Hide Delegate
Remove Middle Man
Introduce Foreign Method
Introduce Local Extension
سازماندهی داده ها
این تکنیک های refactoring به پردازش داده ها کمک می کنند و داده های اولیه را با فانکشنالایتی کلاس غنی جایگزین می کنند. نتیجه مهم دیگر ، جدا کردن ارتباط بین کلاسها برای اینکه بتوان از آن ها بصورت مستقل استفاده کرد.
Change Value to Reference
Change Reference to Value
Duplicate Observed Data
Self Encapsulate Field
Replace Data Value with Object
Replace Array with Object
Change Unidirectional Association to Bidirectional
Change Bidirectional Association to Unidirectional
Encapsulate Field
Encapsulate Collection
Replace Magic Number with Symbolic Constant
Replace Type Code with Class
Replace Type Code with Subclasses
Replace Type Code with State/Strategy
Replace Subclass with Fields
ساده سازی عبارات شرطی
شرط ها با گذشت زمان در منطق خود پیچیده تر می شوند و تکنیک های بیشتری برای مبارزه با این مسئله نیز وجود دارد.
Consolidate Conditional Expression
Consolidate Duplicate Conditional Fragments
Decompose Conditional
Replace Conditional with Polymorphism
Remove Control Flag
Replace Nested Conditional with Guard Clauses
Introduce Null Object
Introduce Assertion
ساده کردن فراخوانی های متد
این تکنیک ها فراخوانی های متد را ساده و قابل فهم تر می کنند. این به نوبه خود ، interface های بین کلاس ها را ساده می کند
Add Parameter
Remove Parameter
Rename Method
Separate Query from Modifier
Parameterize Method
Introduce Parameter Object
Preserve Whole Object
Remove Setting Method
Replace Parameter with Explicit Methods
Replace Parameter with Method Call
Hide Method
Replace Constructor with Factory Method
Replace Error Code with Exception
Replace Exception with Test
پرداختن به تعمیم
انتزاع (Abstraction)گروهی از تکنیک های خود را دارد ، که در درجه اول با قابلیت حرکت در طول سلسله مراتب وراثت کلاس ، ایجاد کلاس ها و رابط های جدید و جایگزینی وراثت با تفویض و برعکس همراه است.