Como os idiomas reais, cada linguagem de programação tem suas respectivas regras, pontuações, pausas e pontos, sendo necessário conhecer esses padrões para manter o código organizado e com fácil entendimento. Nas linguagens de programação precisamos seguir alguns padrões básicos para que o código não vire uma bagunça no meio de um desenvolvimento.
Exemplos de padronização em Java
Java é umas das linguagens mais utilizadas hoje no mundo do desenvolvimento e os programadores costumam utilizar alguns padrões definidos pela comunidade que serão descritos abaixo.
Convenção de Nomes
Mantenha o tamanho dos nomes grande o bastante para transmitir o que eles representam. Exemplo: primeiroNome, sobrenome, ordemServico.
Nomes de Classes e Interfaces
Os nomes de classe devem ser substantivos e, em caso de nomes compostos, utilize nomes com a primeira letra de cada palavra interna maiúscula. Use palavras inteiras evitando acrônimos e abreviaturas. Exemplo: Cliente ou ContaCliente.
Nomes de Métodos
Os nomes dos métodos devem ser verbos, em casos compostos com o primeiro nome minúsculo, e com a primeira letra de cada palavra interna em maiúsculo. Exemplo: calcularPagamento().
Nomes de Variáveis
Os nomes de variáveis devem estar com uma primeira letra minúscula e, em caso de nomes compostos, com a primeira letra de cada palavra interna em maiúsculo. Exemplo: contraPeso, primeiroNome.
Nomes de Constantes
Os nomes de constantes para tipos de dados ordinais devem ter todas as letras em maiúsculo, separadas por underline. Exemplo:
1
2 |
public static final int MAX_POLICY_AMOUNT; ou
public static final char PROCESS_INFO_COMMAND; |
Comentários
Adicione comentários para facilitar a compreensão do código. Mantenha o comentário simples e separe-os de tal forma o código fique limpo e legível. Escreva também os comentários onde alguma explanação é necessária. Não escreva comentários para as coisas óbvias.
Use Linhas em Branco
Forneça linhas em branco entre as seções do código para melhorar a legibilidade. Use uma linha em branco nas seguintes circunstâncias:
- Para separar as definições de classes das definições de métodos;
- Para separar as variáveis locais de um método;
- Para separar blocos de código;
- Para separar comentários das seções lógicas do código.
Espaços em Branco e Tabulação
Use o espaço em branco para melhorar a legibilidade do código nas seguintes circunstâncias: Entre uma palavra-chave e um parêntese. Exemplo:
1
2 |
while (condicao) {
} |
Após vírgulas na lista entre parênteses. Exemplo:
1 | operacao(param1, param2, param3); |
Entre um operador binário e seu operando. Exemplos:
1
2 |
x += y + z;
a = (a + b) / (c * d); |
Variáveis Locais
Declare uma variável local por linha do código e adicione um comentário que identifique a variável. Exemplo:
1 | int contador = 0; // contador para número de referências |
Atributos
Para declarar atributos utilize os seguintes padrões:
- Finalidade: Documente a finalidade do atributo;
- Visibilidade: Mantenha a visibilidade tão baixo quanto possível;
- Iniciação: Certifique-se de que todos os atributos estão inicializados antes que sejam alcançados. Inicialize todos os atributos no momento da criação do objeto. A inicialização posterior pode ser usada para os campos que não são acessados regularmente.
Métodos
Para declarar métodos de membro utilize os seguintes padrões:
- Nomenclatura: use get/set como um prefixo do nome do campo para todos os métodos de ascensão, a menos que forem do tipo booleano. Use o prefixo “is” para nomes de métodos que referenciem campos booleanos. Utilize também a primeira palavra do nome do método de membro como um verbo forte, ativo. Exemplo: getPotenciaMotor(), setPotenciaMotor(), isAutomatico(), reduzirMarcha().
- Visibilidade: Mantenha a visibilidade de funções de membro tão restritiva quanto possível para minimizar o acoplamento entre as classes;
Documentação: Inclua um cabeçalho para especificar as seguintes informações da função de membro:- O propósito da função;
- Seu valor de retorno;
- Os parâmetros;
- As mudanças nas versões do código.
Declarações ou Comandos
Cada linha deve conter no máximo um comando.
Chaves ou Blocos
Siga um esquema consistente para a abertura e fechamento de chaves. Alinhe a abertura e fechamento das chaves verticalmente. Isto facilitará a identificação do começo e término dos blocos. Exemplo:
1
2 3 4 5 6 7 8 9 |
class Cliente
{ public void operacaoParaCliente() { if(condicao) { } } } |
Utilização de Chaves
Sempre utilize chaves para delimitar blocos de comandos, mesmo que estes tenham apenas uma instrução:
1
2 3 4 5 6 |
if(determinadaCondicao) // EVITE ISSO!
realizaOperacao();
if(determinadaCondicao){ // OK realizaOperacao(); } |
Quando utilizamos padrões e boas práticas, garantimos que todos da equipe conseguirão ter o mínimo de entendimento do código que está sendo desenvolvido. Em linguagens como o Java já temos padrões indicados e definidos pela comunidade de forma documentada para que os desenvolvedores adotem um padrão universal de codificação, facilitando assim o entendimento de qualquer código desenvolvido na linguagem. Visto isso é indicado adotar sempre o padrão de codificação da linguagem utilizada.
Autor: Ricardo José Boff
Referências
Padrões de Codificação, por Tadeu Pereira, acesso em: <http://www.devmedia.com.br/padroes-de-codificacao/16529>
Introdução a Padrões de Codificação, por Diego Eis, acesso em: <https://tableless.com.br/introducao-a-padroes-de-codificacao/>
Dicas de Boas Práticas de Codificação, por Luiz Gustavo S. de Souza, acesso em: <https://luizgustavoss.wordpress.com/2010/09/09/dicas-de-boas-praticas-de-codificacao/>
Convenções de Código Java, por Carlos Eduardo, acesso em: <http://www.devmedia.com.br/convencoes-de-codigo-java/23871>