Зміни, що вносяться в клас, мають сегментний характер
Іноді клас вирішує 2 або більше чітко визначених задач. Якщо так трапляється, програміст модифікує або одну частину класу, або іншу, але дуже рідко зміни зачіпають обидві одночасно. Це явна ознака того, що клас повинен бути розбитим на декілька в чіткій відповідності з задачами.
Пов’язані між собою дані, що використовуються разом, не організовані в один клас.
Якщо є набір змінних, які багаторазово використовуються разом, варто подумати над об’єднанням їх в клас.
В ланцюгу викликів методів є ланцюг параметрів, що передаються
Передача параметрів методу для того, щоб той передав їх як параметри в інший метод, може бути і добре, і ні. Потрібно подивитись, чи така передача узгоджується з абстракцією, вираженою в інтерфейсі кожного з методів. Якщо абстракція для кожного методу є відповідною, то і передача параметрів є відповідною, якщо ні, потрібно подумати над відповідністю інтерфейсів.
Метод має погане ім’я
Якщо виявлено, що метод має невідповідне ім’я, потрібно виправити його в місці опису та всіх місцях використання. Потрібно зробити це зразу при виявленні, тому що з часом це буде зробити ще важче.
Поля є public
public полів потрібно уникати, тому що вони роблять нечіткою лінію між інтерфейсом та реалізацією, порушуючи принцип інкапсуляції і обмежуючи гнучкість в майбутньому. Тому потрібно приховувати доступ до полів за public методами.
Коментарі використовуються для пояснення складного коду
Коментарі є важливими, але вони не повинні слугувати для пояснення поганого коду. Поганий код не потрібно пояснювати – його потрібно переписувати.