quarta-feira, janeiro 28, 2009

Generalizando como o diabo...

Flash 1:
Estava aprendendo "clojure" (http://clojure.org) esses dias e o autor (Rich Hickey) fala sobre os problemas de variáveis mutáveis para multi-threading. Aí advoga sobre linguagens funcionais são melhores para multi-thread.

Flash 2:
Hoje, esbarrei com um código JSP e para tentar fazer uma besteirinha (colocar um valor padrão se um atributo não era fornecido) precisei de 5 linhas de "JSTL". Fiquei indignado e meti um operador ternário dentro da Expression Language.

Flash 3:
Estamos em um sistema que quase não possui regras de negócio. 90% são cadastros com simples validações (tem uma parte de GIS, mas essa é outra história). E temos dezenas de cadastros. Ao invés de criar um objeto "bean burro" para cada entidade e usar o hibernate como manda a cartilha, fizemos um objeto parecido com um Map que resolve pra todo mundo. O resultado é conseguimos fazer um CRUD simples com regras de validação em 4 minutos (mais ou menos), e esse tempo ainda vai cair...

O que esses 3 flashes me ensinam? Generalizações são extremamente perigosas. Se você não tem discernimento suficiente para saber quando quebrar um regra, tome cuidado ao segui-la. Você não sabe por que a está seguindo...

Adição: sempre existem regras que não sabemos quando quebrar.

Corolário: só respeitar a opinião de alguém se ele souber me dar um contra-exemplo.

Um comentário:

  1. Só adicionando, que esqueci no post: Rich Hickey me dá um contra-exemplo depois dizendo que nem sempre o "imutável" é prático e por isso a linguagem possui um mecanismo para trabalhar com segurança com valores "mutáveis". Eu respeito o Rich.

    ResponderExcluir