Es cualquier síntoma en el código fuente de un programa que posiblemente indica un problema más profundo.
- Código duplicado
- Método grande
- Clase grande
- Demasiados parámetros
- Una clase que usa excesivamente métodos de otra clase
- una clase que tiene dependencias en detalles de implementación de otra clase
- No cumple el principio de sustitución de Liskov
- Clase perezosa que hace poco
- Uso de patrones de diseño demasiado complicados
- Identificadores excesivamente largos, cortos
- Callback excesivos