anti-patterns

23
Anti-patterns Observando diretamente o efeito Dunning-Kruger no ecossistema de software

Upload: ricardo-banffy

Post on 19-Jun-2015

161 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Anti-patterns

Anti-patternsObservando diretamente o efeito Dunning-Kruger

no ecossistema de software

Page 2: Anti-patterns

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)

Page 3: Anti-patterns
Page 4: Anti-patterns

Os anti-padrões

• Idéias ruins

• Implementações ruins

• Às vezes decorrem do “poder inexpressivo” da linguagem

• Uma vez instalados

Page 5: Anti-patterns
Page 6: Anti-patterns

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

Page 7: Anti-patterns
Page 8: Anti-patterns

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

Page 9: Anti-patterns
Page 10: Anti-patterns

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

Page 11: Anti-patterns
Page 12: Anti-patterns

Valores mágicos

• Um misto de referência externa e enum

• Às vezes é uma referência externa, em outras, um enum

Page 13: Anti-patterns
Page 14: Anti-patterns

if (campaign_id === -1) { do_something_different();} else { act_normally();}

Page 15: Anti-patterns
Page 16: Anti-patterns

if (campaign_id === -1) { do_something_different();} else if (campaign_id == -2) { do_something_else_different();} else { act_normally();}

Page 17: Anti-patterns
Page 18: Anti-patterns

if (campaign_id === -1) { do_something_different();} else if (campaign_id == -2 || campaign_id <= -10) { do_something_else_different();} else { act_normally();}

Page 19: Anti-patterns
Page 20: Anti-patterns

if (campaign_id === GLOBAL) { do_something_different();} else if (campaign_id == OTHER || campaign_id <= DIFFERENT) { do_something_else_different();} else { act_normally();}

Page 21: Anti-patterns
Page 22: Anti-patterns

O que fazer?

• Catalogar

• http://c2.com/cgi/wiki?AntiPatternsCatalog

• http://thedailywtf.com

• É sério

Page 23: Anti-patterns

about.me/rbanffy