Нарушители объектно-ориентированного дизайна.
Альтернативные классы с разными интерфейсами
Два класса выполняют одинаковые функции, но имеют разные названия методов.
Отказ от наследства
Если подкласс использует лишь малую часть унаследованных методов и свойств суперкласса, это является признаком неправильной иерархии. При этом ненужные методы могут просто не использоваться либо быть переопределёнными и выбрасывать исключения.
Операторы switch
У вас есть сложный оператор switch или последовательность if-ов.
Временное поле
Временные поля — это поля, которые нужны объекту только при определённых обстоятельствах. Только тогда они заполняются какими-то значениями, оставаясь пустыми в остальное время.