O pior anti-pattern de todos: God object

    Nada melhor, quando aprendendo sobre um assunto novo, do que saber o que NÃO fazer. Anti-pattern (Anti-padrões), nada mais são do que programar contra a reusabilidade e flexibilidade.

Óbvio que não é possível programar com a melhor flexibilidade e reusabilidade, aliás nem devemos tentar, como já disse Tony Hoare: “Premature optimization is the root of all evil” (“Otimização prematura é a raiz de todo mal”). Mas devemos sim estar atentos a código inútil, mal escrito ou ambos. É aí que entra o que considere o pior dos anti-patterns. O God object, o objeto que faz tudo, ele é onisciente, conhece a todos e todos dependem dele, assobia e chupa cana ao mesmo tempo, são classes com milhares de linhas, e o pior de tudo, assim como o próprio Deus, ninguém sabe de onde veio e nem para onde vai, mas com certeza levará todo o sistema junto em colapso.

Muito cuidado com esse tipo de objeto, se você notar que sua classe ou mesmo um único método está fazendo mais do que uma tarefa, pare… reflita… e RE-FA-TO-RE, nunca tenha medo de mexer no que está feito, lembre-se que alguns instantes refatorando lhe trará muitos benefícios no futuro.

2 Comments »

  1. Nelson said,

    February 11, 2007 @ 7:03 pm

    Ae carlão, finalmente fez um blog (um dia eu faço o meu tb), sucesso com isso aqui :D (Pelo menos o tema foi bem escolhido).

  2. Fabio said,

    February 12, 2007 @ 11:57 am

    Tem um livro meio antiguinho mas bastante legal, o Object-Oriented Design Heuristics, que dá muitas dicas de como fazer seu design nascer de forma quase que automatizada. Tem uma dica que eu gosto muito: todo método de um objeto deve usar todas as propriedades e todos os argumentos(claaaro!) o tempo todo. Se você tem um objeto onde uma parte dos métodos acessa um subconjunto das propriedades, e a outra parte o outro subconjunto, este seria um exemplo trivial de que na verdade vc tem 2 objetos mesclados, hora de refatorar!
    Um grande abraço, gostei do post, continue assim!

RSS feed for comments on this post · TrackBack URI

Deixe seu comentário