As convenções de codificação definem um conjunto de regras que devem ser seguidas durante a escrita de programas Java. Os objectivo principais das convenções de codificação são:

  • Aumentar a legibilidade do código produzido por cada programador
  • Apresentar um aspecto uniforme relativamente ao código produzido por vários programadores.


Convenções de Codificação


O código desenvolvido no contexto da disciplina de Programação com Objectos tem que seguir o conjunto de regras de codificação indicados nesta secção. Código que falhe em seguir estas regras terá uma penalização na nota.

Convenção de Nomes


Os nomes de atributos, classes e métodos devem transmitir a funcionalidade da entidade em causa. Isto permite aumentar a legibilidade do código. A regra de codificação relativa à especificação do nome a utilizar para uma dada entidade depende do seu tipo. Isto permite distinguir o tipo de uma entidade com base no seu nome.

 Nomes de classes e interfaces

  • Começar por uma maiúscula. As letras seguintes são minúsculas, excepto no início de novas palavras
  • Não usar traços de união
  • Evitar o uso de abreviaturas e acrónimos
  • Bons exemplos: Gato, PeleGato
  • Maus exemplos: gato, PULGA, Gato_pata

Nomes de métodos

  • Letras minúsculas excepto a primeira letra de novas palavras
  • Não usar traços de união
  • Usar verbos
  • Bons exemplos: correr(), correrDepressa(), chamarJerry()
  • Maus exemplos: Felix(), Aceder(), obter_Peso()

Nomes de variáveis

  • Letras minúsculas excepto a primeira letra de novas palavras
  • Não usar traços de união
  • Curtos mas com significado
  • Evitar nomes com uma letra (excepto se a variável é temporária e para "deitar fora")
  • i, j, k, m, n para inteiros
  • c, d, e para caracteres
  • Bons exemplos: acariciado, gato, meuComprimento
  • Maus exemplos: Felix, meu_Comprimento
Nomes de variáveis de instância e de classe
  • devem  começar com um traços de união (underscores) seguido de letras minúsculas
  • Bons exemplos: _pessoa, _contador
Nomes de constantes
  • Letras maiúsculas e traços de união
  • Bons exemplos: NUM_OSSOS, MAX_PONTOS

Produzir Código Limpo


  • Apagar o código que está obsoleto e não é usado. Não se limite a comentar o código obsoleto.
  • Uma instrução por linha. Não colocar várias instruções na mesma linha.
  • Não utilizar métodos “deprecated” da biblioteca do Java
  • Comentar o código mas evitar ser muito verboso ou sintético

Variáveis Locais

Declarar uma variável local por linha do código. 

As variáveis locais devem ser declaradas no início de cada bloco. Esta regra permite a quem leia o código saber facilmente quais são as variáveis locais que são necessárias para um dado bloco de código.

Espaços em Branco

A utilização de um espaço em branco permite aumentar a legibilidade do código nalgumas situações:

  •  Entre uma palavra-chave e um parêntese. Exemplo:

while (condicao) {
}

  • Após cada vírgula na especificação dos parâmetros de um método. Exemplo:

método(tipo1 param1, tipo2 param2, tipo3 param3)

  • Entre um operador binário e seus operandos. Exemplo:

x += y + z;
a = (a + b) / (c * d);

  • Entre expressões em uma declaração “for”. Exemplo:

for (expressão1; expressão2; expressão3)

Indentação de Código e Blocos de instruções

O código deve estar sempre indentado. Use um espaçamento de 2 ou 4 espaços. (De preferência, utilize um editor de texto que realize a indentação de código de forma automática). A indentação do código aumenta a sua legibilidade.

Siga um esquema coerente para colocar o início e fim de blocos de instruções (representado por '{' e '}', respectivamente). Existem duas abordagens possíveis. Uma consiste em alinhar verticalmente os dois caracteres que representam o início e fim do bloco de instruções. Exemplo:


class Exemplo
{
    public void metodo()
     {
        if(condição)
         {
            // algum código
         }
    }
}


A segunda alternativa corresponde am colocar o caracter que representa o início de um bloco de instruções na extremidade da linha que começa o bloco. O caracter de fim do bloco de instruções fica alinhado com a instrução que começa o bloco. Esta abordagem alternativa torna o código um pouco mais compacto sem que isso diminua a sua legibilidade. Exemplo:


class Exemplo{
    public voidmetodo(){
        if(condição){
            // algum código
         }
    }
}