segunda-feira, março 19, 2007

Allen Holub, a ovelha negra

Você trabalha na área de TI, procura melhorar o design das suas aplicações orientadas à objeto a cada dia, preocupa-se com a facilidade de manutenção e utilização de patterns, e nunca ouviu falar em Allen Holub? Talvez devesse. Não necessariamente para concordar com ele, mas ao menos para ser instigado à reavaliar sua própria maneira de pensar nas coisas, especialmente naquelas que sempre foram consideradas triviais.

Allen Holub trabalha como consultor em empresas de desenvolvimento de software e, às vezes, vai além e acaba também desenvolvendo a aplicação. Ele diz que sua motivação vem da frustração que sente ao ver empresas gastando muito dinheiro e ainda assim falhando no desenvolvimento de seus produtos. Ele também afirma que, com alguma ajuda, esta situação poderia ser evitada. E é claro, oferece tal ajuda.

No campo da orientação à objetos, Allen defende um certo "purismo", recorrendo à alguns conceitos bastante antigos, e que vem sendo sistematicamente ignorados.

Como exemlo, gostaria de citar uma das suas principais "broncas", que envolve os acessors (getters e setters). Os acessors são tão comuns hoje em dia que até fazem parte de algumas linguagens, que criam "facilitadores" para sua utilização (properties), como é o caso do Delphi e do C#. Já no mundo Java, por exemplo, temos os getIsso() e setAquilo() utilizados como padrão. Quase todo o mundo usa. Segundo Allen Holub, isto viola o conceito do encapsulamento, pois permite que os atributos de um objeto sejam lidos por outro. Segundo ele, um objeto não deve expor nenhuma informação e deve ser conhecido apenas por aquilo que pode fazer, e não pela informação que seus atributos contém. Você não deve solicitar que um determinado objeto lhe retorne informação para que você as manipule externamente, e sim, pedir à este objeto, onde está contida a informação, que faça o que deve ser feito. Qualquer informação contida nos atributos de um objeto, deve ser vista e manipulada apenas pelo próprio objeto. Ele alegou, também, que esse padrão de get e set utilizado no Java, não passa de uma maneira de publicar os membros privados de um objeto.

Agora, imagine o estardalhaço que ele fez quando publicou isso no site Java World. Sua cabeça deve ter ficado à prêmio por lá, na época. Alguns comentários feitos pelos leitores, de suave, não tinham absolutamente nada. Ele teve que aguentar algumas pancadas e se defender bastante, sempre buscando novos argumentos.

Ele fala de muitas outras coisas, também. Quase todas no mesmo nível do exemplo que citei acima. Como este post ficaria muito grande se eu relacionasse tudo, apenas gostaria de fazer uma recomendação - Se tiver oportunidade, leia os artigos de Allen Holub (os links podem ser encontrados em seu site), e depois de fazer as devidas considerações, veja se pode dizer que ele está errado ;-)

Ele também está procurando um bom software de blog. Sugestões são bem vindas. Contudo, já adianto que ele se referiu ao Wordpress como tendo uma "implementação miserável".

Um comentário:

Charles Abreu disse...

Lembro que uma vez, há muito tempo, você me disse sobre um desses artigos algo como: "esse cara é daqueles que entrarão para o time dos gênios da área...ou entrarão num manicômio, contra a vontade, numa camisa de força". Até hoje eu não sei qual é o futuro mais provável. Gosto dos artigos do Holub. Sempre que termino de ler um, não sei se concordo plenamente ou discordo radicalmente, ou se é melhor esquecer daquilo tudo e pensar em outra coisa mais segura. Para mim ele é um dos "não-convencionais" da área técnica. E é sempre bom ter opiniões diferentes da convenção, não é mesmo?