o Перенести складний логічний вираз в добре іменовану булеву функцію .
o Об’єднати оператори, що знаходяться в різних частинах умовного оператора.
o Використовувати break чи return замість змінних, що служать для виходу з циклу.
o Виконувати return як тільки обчислено результат функції замість присвоєння значення, що повертається, спеціальній змінній.
o Заміняти умови поліморфізмом (особливо case-оператори).
o Створювати і використовувати null об’єкти замість перевірки на значення null.
Рефакторинги рівня методів
o Виокремити метод.
o Перенести код методу у місце виклику.
o Перетворити довгий метод у клас.
o Замінити простий алгоритм більш ефективним складнішим алгоритмом.
o Додати параметр.
o Вилучити параметр.
o Відділити операції читання від операцій запису.
o Об’єднати схожі методи, використавши параметри.
o Розділити методи, чия поведінка залежить від переданого параметра.
o Передавати як параметр цілий об’єкт, а не окремі поля.
o Передавати як параметр окремі поля, а не цілий об’єкт.
o Інкапсулювати приведення типу вниз.
Рефакторинги рівня реалізації класу
o Уникати багаторазового створення об’єктів шляхом використання вказівників на об’єкт, що розділяється декількома частинами програми (для великих, громіздких об’єктів).
o Уникати використання багатьох вказівників шляхом створення багатьох об’єктів (для малих об’єктів).
o Змінювати положення методів або даних в ієрархії.
o Виокремити спеціалізований клас в підклас.
o Скомбінувати схожий код в клас вищого рівня ієрархії.
Рефакторинги рівня інтерфейсу класу
o Перенести метод в інший клас.
o Розбити клас на два.
o Прибрати клас.
o Вилучити проміжний метод.
o Вилучити set()-методи для полів, які не можуть змінюватись.
o Приховувати методи, які не використовуються поза межами класу.
o Об’єднати клас-нащадок та клас-предок, якщо їх реалізація дуже подібна.
Рефакторинги рівня системи
o Робити копії даних, якими програміст не керує.
o Замінити односторонній зв’язок класів двостороннім.
o Замінити двосторонній зв’язок класів одностороннім.
o Створити фабрику об’єктів замість простого конструктора.
o Замінити коди помилок на виключні ситуації або навпаки.