Прийоми рефакторингу

Складання методів
Значна частина рефакторинга присвячується правильному складанню методів. У більшості випадків, коренем усіх зол є занадто довгі методи. Хитросплетіння коду всередині такого методу, ховають логіку виконання і роблять метод вкрай складним для розуміння, а значить і для змін. Рефакторинги цієї групи покликані зменшити складність всередині методу, прибрати дублювання коду і полегшити подальшу роботу з ним.

Переміщення функцій між об'єктами
Якщо ви розмістили функціональність по класах не найвдалішим чином - це ще не привід впадати у відчай.
Рефакторинги цієї групи показують як безпечно переміщати функціональність з одних класів в інші, створювати нові класи, а також приховувати деталі реалізації з публічного доступу.

Організація даних
Рефакторинги цієї групи покликані полегшити роботу з даними, замінивши роботу з примітивними типами багатими функціональністю класами.
Крім того, важливим моментом є зменшення зв'язаність між класами, що покращує переносимість класів і шанси їх повторного використання.
- Заміна значення посиланням
- Заміна посилання значенням
- Дублювання видимих даних
- Самоінкапсуляція поля
- Заміна простого поля об'єктом
- Заміна поля-масиву об'єктом

Спрощення умовних виразів
Логіка умовного виконання має тенденцію ставати складною, тому ряд рефакторингів спрямований на те, щоб спростити її.

Спрощення викликів методів
Ці рефакторинги роблять виклики методів простіше і ясніше для розуміння. Це, в свою чергу, спрощує інтерфейси взаємодії між класами.

Задачі узагальнення об'єктів
Узагальнення породжує власну групу рефакторингів, в основному пов'язаних з переміщенням функціональності по ієрархії успадкування класів, створення нових класів та інтерфейсів, а також заміни успадкування делегуванням і навпаки.