Eu e minha equipe de P&D mantemos uma grande base de código. Dividimos nossa lógica de negócios em vários pacotes. alguns dos quais possuem classes com nomes idênticos .
Como você pode imaginar, os nomes entram em conflito quando as duas classes são referenciadas no mesmo arquivo Java.
Por exemplo:
com.myapp.model (package)
- Device (class)
- ...
com.myapp.data (package)
- Device (class)
- ...
Tivemos um debate sobre qual a melhor prática para tratar esses casos e surgiram as seguintes opções:
1ª Opção
Renomeando a classe, adicionando um prefixo
ModelDevice DataDevice
2ª Opção
Usando o pacote completo + nome da classe quando ambos são referenciados
com.myapp.model.Device com.myapp.data.Device
O que é mais correto em termos de gerenciamento de código e escalabilidade?
atualmente estamos misturando as duas abordagens e começando a ter inconsistência
java.util.Date
e java.sql.Date
- especialmente porque java.sql.Date
é uma subclasse java.util.Date
e muito bem sai das camadas de dados (e não serializa muito bem para JSON).