Classes *Util

January 14, 2008

Já vi muita gente espalhar classes “utilitárias” por todo o sistema. StringUtil, NumberUtil, DateUtil… Daqui a pouco vamos ter UtilUtil.

Considero esse hábito no mínimo condenável. O nome dessas classes não revela qual sua real função, tornando o código difícil de entender e manter. Esse tipo de classe costuma crescer e virar um verdadeiro saco de gatos, contendo diversos métodos que praticamente não tem nada a ver uns com os outros.

Nomes de classes (e também métodos, variáveis, etc.) deveriam ser cuidadosamente definidos. Idealmente, deveria se ter em mente o conceito de Ubiquitous Language (algo como Linguagem Onipresente) do DDD na hora de se criar os nomes das classes. Ou seja, todo o comportamento do sistema deveria estar implementado em classes cujos nomes fazem parte do domínio do problema. Nomes que têm o mesmo significado tanto para a equipe técnica quanto para clientes e usuários finais. Isso facilita a comunicação entre todos e, também, o entendimento do código e sua manutenção futura.

Minha sugestão é, então, que se evite criar classes chamadas *Util. Provavelmente existe um nome melhor, que vai expressar melhor qual a responsabilidade da classe e, consequentemente, vai deixar o código mais limpo e claro.

Advertisements