de Software:- Inversao da Abstracao: nao expor a funcionalidade implementada requisitada pelos usuarios, para que eles a re-implementem usando funcoes de mais alto nivel. - Ponto de vista ambiguo: apresentar um modelo (normalmente analise e design orientados a objeto) sem especificar seu ponto de vista.- Grande bola de lama: um sistema sem nenhuma estrutura reconhecida.- Database-as-IPC: usar um banco de dados como message queue para comunicacao de interprocessamento de rotina onde um mecanismo muito mais simples seria apropriado.- Chapeamento a ouro: continuar a trabalhar em uma tarefa ou projeto bem alem do ponto em que o esforco extra agrega valor.- Efeito na plataforma interna: um sistema e tao customizavel que se torna uma replica pobre da plataforma de desenvolvimento de software.- Input kludge (sem traducao): falha em especificar e implementar o tratamento de uma entrada possivelmente invalida.- Interface bloat (inchaco da interface): construir uma interface tao poderosa que se torna extremamente dificil de implementa-la.- Magic pushbutton (botao magico): codificar a logica de implementacao diretamente no codigo da interface, sem usar abstracao.- Race hazard (perigo de corrida): falha na verificacao da consequencia de diferentes ordens de eventos.- Stovepipe system: componentes mal-relacionados e dificeis de manter.Anti-patterns do design orientado a objeto:- Anemic Domain Model: uso do modelo de dominio sem qualquer logica de negocio. Os objetos do modelo de dominio nao podem garantir sua correcao, porque sua logica de validacao e mutacao esta armazenada externamente (muito provavelmente em multiplos locais).- BaseBean (sem traducao): herdar a funcionalidade de uma classe utilitaria em vez de delegar a ela.- Call super (sem traducao): requisitar as subclasses a chamarem um metodo overriden de uma superclasse.- Problema circulo-elipse: subtipar tipos-variavel com base dos subtipos de valor.- Dependencia circular: introduzir dependencias mutuas diretas ou indiretas entre objetos ou modulos do software.- Constant interface (sem traducao): usar interfaces para definir constantes.- God object (Objeto Deus): concentrar muitas funcoes em uma unica parte do design (classe).- Object cesspool (fossa de objetos): reutilizar objetos cujo estado nao esta em conformidade com o contrato (possivelmente implicito) para reuso.- Orgia de objetos: falha para encapsular propriamente os objetos, permitindo acesso irrestrito ao seu interior.- Poltergeists: objetos cujo unico proposito e passar informacao para outro objeto.- Acoplamento sequencial: uma classe que exige que seus metodos sejam chamados em uma ordem particular.- Problema Io-Io: uma estrutura (por exemplo, de heranca) que e dificil de entender devido a sua fragmentacao excessiva.Anti-patterns de programacao:- Complexidade acidental: introduzir uma complexidade desnecessaria a uma solucao.- Acao a distancia: interacao inesperada entre partes amplamente separadas de um sistema.- Fe cega: falta de verificacao da correcao realizada em um bug, ou do resultado de uma subrotina. - Ancora de barco: manter uma parte do sistema que nao possui mais qualquer uso.- Busy spin (sem traducao): consumir CPU enquanto aguarda algo ocorrer, normalmente pela verificacao repetida em vez de mensagem.- Caching failure (sem traducao): esquecer de resetar uma flag de erro quando o mesmo foi corrigido.- Cargo cult programming (sem traducao): usar patterns e metodos sem entender por que.- Codificar por excecao: adicionar novo codigo para tratar cada caso especial reconhecido.- Esconder o erro: