Long methods and duplicated codeLarge classReplacing complex logical statements and switch statements with polymorphism or the Strategy PatternDuplicating code following a single control structureLong Parameter List and primitive obsessionIndecent exposureFeature envyInappropriate intimacyDeeply nested statementsRemove assignments to parametersCommentsEncapsulating Composite with BuilderReplacing hard-coded notifications with ObserverReplacing one/many distinctions with CompositeSeparate versions with Adapters