Boa tarde pessoal, trabalhei um pouco com Java há aproximadamente 2 anos e desde então tenho trabalhado com .NET (não me crucifiquem!).
Recentemente voltei para um projeto JAVA em Swing e estou com algumas dúvidas, sobre boas práticas em Java:
Em .NET usamos os sufixos BEs, DHs, BOs e DAOs. Além do “I” para indicar que a classe em questão é uma interface. Exemplos:
ProdutoBE (mapeamento do banco);
ProdutoDH (data holder - extende o ProdutoBE e adiciona mais algumas propriedades, por exemplo informaçãoes para auditoria);
IProduto (interface do produto);
ProdutoBO (classe de negócio);
IProdutoDAO (interface para o DAO);
ProdutoDAO (DAO de produtos).
Eu dei uma pesquisada rápida e verifiquei que em Java temos os VOs, DTOs, Impls, etc… Quais são adequados para o meu exemplo?
Basicamente no Java: Classes e interfaces com a PrimeiraLetraDeCadaPalavraEmMaiusculo, métodos e variáveis com a segundaLetraDeCadaPalavraEmMaiusculo e constantes com a PALAVRATODAEMMAIUSCULO
Sufixos são bastante usados (como DAO).
Quanto a prefixos (notação húngara) não se usam, exceto, obviamente, quando você tem elementos de interface de usuário que correspondem a um determinado campo.
Por exemplo, se você tem uma classe que representa um Usuário, a classe GUI que mapeia a entrada de dados a essa classe Usuário provavelmente vai ter campos com nomes “txtNomeUsuario” ou “cboEstadoCivil”. Por exemplo, o WindowBuilder tenta fazer exatamente isso quando sugere um nome de campo.
Dá uma olhada aqui, principalmente em Lexical Structure.
Sufixos bastante utilizados: DAO, Service, Validator, Controller. Alguns padrões também são feitos, por exemplo, colocar o mesmo nome do Mapping do Controller (pelo menos no Spring) com o mesmo nome do diretório que estão as views.
Por exemplo:
@RequestMapping(value = "/user")
public class User { ...}
E o nome do diretório que estão as jsp´s, dentro do WEB-INF ficaria user.