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

Dherik Barison
Jun 12 · 2 min read

Todo desenvolvedor Java que se prese, 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?

E 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 de classe 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:

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:

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.

Dherik Barison

Written by

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

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade