BaseBean - umieszczanie metod typu utility (użyteczności) w klasie bazowej, a następnie tworzenie klas dziedziczących. Metody utility powinny być wyodrębnione do osobnej biblioteki lub używane przez delegacje, ponieważ są one praktycznie identyczne we wszystkich projektach. Podczas używania dziedziczenia tworzymy niepotrzebne zależności do klasy bazowej, co powoduje utrudnienie kontroli kodu,
Wołanie przodka (ang. CallSuper) - występuje w przypadku, gdy metoda która nadpisuje metodę z klasy bazowej musi się odwołać do metody bazowej. W takim wypadku należy stworzyć metodę abstrakcyjną a więc metodę bez ciała i implementować ja w klasach dziedziczących,
Empty subclass failure - złamanie kontraktu klasy nadrzędnej, czyli te same metody z klas pochodnych nie zachowują się tak jak metody z klasy bazowej. Nie spełniają testu Empty Subclass,
Boski obiekt (ang. God object) - klasa ze zbyt dużą odpowiedzialnością, umieszczenie zbyt dużej ilości metod w jednej klasie,
Object cesspool - ponowne wykorzystanie obiektu, podczas gdy wcześniej jego zachowanie zostało zmienione,
Poltergeists - tworzenie obiektów przekazujących tylko i wyłącznie dane dla innych obiektów,
Jo-jo - zbyt długa hierarchia dziedziczących po sobie klas. Aby zrozumieć program trzeba przechodzić w tę i z powrotem pomiędzy klasami,
Anemiczny model dziedziny (ang. Anemic Domain Model) - Model dziedziny składa się z klas z atrybutami jednak nie zawierających metod, co powoduje, że nie jest obiektowy. Logika biznesowa przeniesiona jest do innych klas. Rozwiązanie często stosowane, w zależności od przypadku użycia jest traktowane, jako antywzorzec lub poprawne rozwiązanie,
Sequential Coupling - klasa, która wymaga wywoływania metod w określonej kolejności,
Singletonizm (ang. Singletonitis) - nadmierne używanie wzorca singleton.
Spaghetti code – kod, który jest trudny do modyfikacji i mało czytelny. Zazwyczaj poprzez używanie rozbudowanych instrukcji warunkowych, instrukcje goto itd.