CWI Software
Published in

CWI Software

Aposentando o termo “DTO” do nome das suas classes, variáveis e métodos

Photo by Chris Ried on Unsplash

Todo desenvolvedor Java que se preze, em algum momento da sua vida de programador, já criou alguma classe com o sufixo “DTO”. Normalmente estas situações incluem o transporte de informações de um ponto a outro. Nada mais justo, afinal o significado de DTO é Data Transfer Object.

Porém, existem vários contras no simples uso do sufixo DTO no nome de uma classe.

A primeira é que o sufixo “DTO” diz muito pouco sobre a responsabilidade da classe.

Por exemplo, digamos que temos um PedidoDTO usado para guardar informações de pedido. Até aqui, tudo bem. Mas o nome da classe não diz muito sobre o destino ou origem destas informações, o que levanta várias questões:

  • Este DTO é usado para exibir informações em uma API?
  • Este DTO é usado para receber informações em uma API?
  • Este DTO é usado como uma mensagem entre micro serviços?
  • Este DTO é usado para guardar informações de pedido em algum cache?
  • Etc.

Vemos claramente aqui um espaço para melhoria do nome desta classe, e de uma maneira bem simples. Respectivamente, veja como podemos usar um nome diferente para cada cenário apresentado anteriormente: PedidoResponse, PedidoRequest, PedidoMessage e PedidoCache.

O segundo contra é o sufixo em si. Digamos que você não quer abrir mão do termo DTO, mas ainda assim há mais um porém ao usá-lo. Normalmente o uso de siglas em maiúsculo no meio de variáveis, métodos ou nomes de classes traz uma certa confusão na leitura do código. Podemos citar, além do DTO, as seguintes siglas: CPF, CNPJ, NFE, etc.

Veja o seguinte exemplo de trecho de código para entender esta confusão:

Pessoa pessoa = converterDTOParaEntidade(pessoaDTOOrigem); 

No código acima, temos dois pontos que dão um nó na cabeça ao lê-lo, são eles: DTOParae DTOOrigem. Como temos 2 letras maiúsculas juntas que não fazem parte da mesma palavra ou termo, você acaba não distinguindo imediatamente o termo DTO do código acima, mas sim DTOP ou DTOO, o que não faz sentido.

Sendo assim, ficaria mais legível se usássemos:

Pessoa pessoa = converterDtoParaEntidade(pessoaDtoOrigem);

Como já estamos acostumados no CamelCase a ler cada palavra que começa com maiúsculo como se fosse uma palavra diferente, é mais fácil ler o código acima do que o código anterior. Usei o DTO como exemplo, mas como disse anteriormente, este problema é compartilhado com qualquer situação onde temos uma sigla que é representada por letras maiúsculas.

Embora o uso do “Dto” possa ser justificado em alguns casos, é bem provável que na maioria deles você conseguirá encontrar um termo melhor para substituir este sufixo, dando mais significado para a responsabilidade daquela classe e trazendo mais clareza na leitura do código.

--

--

--

Desenvolvemos soluções e sistemas de TI com base nas necessidades específicas de empresa de médio e grande porte em âmbito global, desde 1991.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Dherik Barison

Dherik Barison

Java developer, Tech Lead, Stack Overflow enthusiast and contributor: https://dherik.com

More from Medium

NEW: Esprezzo Dispatch Now Supports Avalanche

Who are SMM service providers in smm panels?

https://zosmm.com/

Itez (On-Ramp Service) 🤝 Polygon!

NFL Week One Odds Released: Bronco’s Host The Seahawks