Upload
ricardo-banffy
View
161
Download
0
Embed Size (px)
Citation preview
Anti-patternsObservando diretamente o efeito Dunning-Kruger
no ecossistema de software
Padrões de projeto• Exemplificam boas idéias
• Dão nomes a estas idéias - facilitando a comunicação
• “objeto que, quando muda, chama um callback que outros objetos registraram para serem notificados quando algo muda” x “um observable”
• Servem de inspiração (evitando o que vem a seguir)
Os anti-padrões
• Idéias ruins
• Implementações ruins
• Às vezes decorrem do “poder inexpressivo” da linguagem
• Uma vez instalados
A classe biblioteca• Às vezes, tudo o que você quer são funções
simples
• Algumas linguagens não deixa(va)m você ter funções simples
• Tende a se tornar infinitamente grande, recebendo múltiplas implementações de funções quase idênticas
O verniz
• Encapsula outra coisa, sem acrescentar ou modificar nenhum comportamento
• É um vício comum quando se programa em torno de objetos persistentes
• Invariavelmente associado ao
Controlador de uma coisa só• É a classe que implementa os métodos que
deveriam estar na classe verniz
• Nunca poderia ser usada com uma outra classe verniz porque os métodos (pelo menos alguns deles) implementam comportamento específico daquele tipo de entidade
• A classe verniz não pode (nem deve, porque todas as regras estão no controlador) ser usada sozinha
Valores mágicos
• Um misto de referência externa e enum
• Às vezes é uma referência externa, em outras, um enum
if (campaign_id === -1) { do_something_different();} else { act_normally();}
if (campaign_id === -1) { do_something_different();} else if (campaign_id == -2) { do_something_else_different();} else { act_normally();}
if (campaign_id === -1) { do_something_different();} else if (campaign_id == -2 || campaign_id <= -10) { do_something_else_different();} else { act_normally();}
if (campaign_id === GLOBAL) { do_something_different();} else if (campaign_id == OTHER || campaign_id <= DIFFERENT) { do_something_else_different();} else { act_normally();}
O que fazer?
• Catalogar
• http://c2.com/cgi/wiki?AntiPatternsCatalog
• http://thedailywtf.com
• É sério
about.me/rbanffy