Olá, amigos foristas!
Seguinte: estou começando um projeto novo, relativamente grande e complexo, onde, atualmente, trabalha uma equipe de 5 pessoas. Como é um produto da empresa, várias outras pessoas mexerão com esse sistema. Pessoas com mais ou menos experiência passarão por esse projeto. Dito isso, gostaria de estabelecer junto com a equipe algumas convenções/padrões para justamente evitar a arbitrariedade e diminuir um pouco do impacto da alta rotatividade de desenvolvedores no projeto. O projeto usará EJB, JPA, JSF (1.2 ou 2), Rich Faces ou Prime Faces, Facelets e alguns outros frameworks.
Tentei montar uma lista já de alguns itens. Gostaria de saber de vocês o que vocês acham certo manter ou tirar. O que é legal e o que é exagero.
----------- Legibilidade do código --------------
-Indentação do código (limitar número de colunas do código na IDE?);
-Código que contenha regra de negócio, relativamente complexa, deve ser comentado; (subjetivo, usar o bom senso)
-Evitar try/catch sem tratamento de exceção;
-if e else, mesmo com uma linha, abrir e fechar {}
-
Nomes de variáveis devem ser sugestivos (auto-explicativos)
-
Evitar código comentado. O SVN deve ser usado para guardar código antigo;
-
Evitar warnings;
-
Regras de negócio devem ser tratadas no BO. Não no DAO nem no ManagedBean;
-
Os métodos devem executar somente aquilo que se propõem a fazer; Exemplo: método ?salvar? não deve ter código de validação dentro dele;
-
Antes de criar um método utilitário ou um serviço, verificar se o mesmo já não existe no sistema ou em alguma biblioteca utilitária;
-
Se foi desenvolvido um método que pode ser usado por outras classes, colocá-lo num projeto Util.
-
variáveis que são lista, usar o ?list? antes do nome da variável. Ex: listUsuarios, listPapeis, listAtribuicoes.
------------------- Métodos ---------------------
- Todos os métodos devem começar com palavras no infinitivo (ex: buscar, salvar, calcular…), exceto os que retornam boolean.
Métodos de busca: buscarPor… ou buscarTalEntidadePor…
Métodos que persistem objetos: salvar
Métodos que removem objetos: excluir/remover
Métodos que buscam objetos usando varios atributos (mais de 5), devem ter seu nome com buscarPorFiltro.
Não usar palavras em língua estrangeira nos nomes do método.
--------------- Desempenho/BD -----------------
-
Usar HQL nas consultas, evitar query nativa;
-
Listas sempre como lazy.
-
Evitar uso de laços aninhados (consultas no banco são mais rápidas);
-
Evitar uso abusivo da sessão;
-
Usar paginação real nas listagens;