Convenções de Codificação
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.
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. Estas convenções de codificação estão baseadas nas convenções seguidas na Google e que podem ser consultadas aqui.
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. Deve utilizar bons nomes para as variáveis que devem refletir a razão de utilização da variável, utilizando as regras descritas a seguir. Apesar desta directiva ser subjectiva, evite ser muito verboso (nome da variável muito grande) ou muito sucinto.
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 tem um âmbito reduzido e é para "deitar fora". Isto é o caso dos índices utilizados no contexto de um ciclo com poucas instruções:
- i, j, k, m, n para inteiros
- c, d, e para caracteres
- Bons exemplos: acariciado, gato, meuComprimento
- Maus exemplos: Felix, meu_Comprimento
- Segue as mesmas regras do caso anterior com a resticção adicional de que devem começar com um traço de união (underscores)
- Bons exemplos: _pessoa, _contador, _totalCount
- Letras maiúsculas e palavras separadas por traços de união
- Bons exemplos: NUM_OSSOS, MAX_PONTOS
- Só as variáveis de classe é que podem ser classifciadas como constantes. Uma variável de classe é uma constante quando é declarada como final e não é possível alterar a entidade referenciada pela variável de classe. Isto implica que o tipo da variável de classe deve ser imutável. Em Java, os tipos imutáveis incluem os tipos primitivos, String, os tipos Wrapper (Long, Integer, ...) e colecções imutáveis de tipos imutáveis. Um tipo é imutável quando não fornece nenhuma forma de alterar o conteúdo das suas instâncias.
- Caso o nome a utilizar para um tipo, método ou variável (com a excepção de constantes) inclua um acrónimo, então só a primeira letra do acrónimo é que deverá ficar em maiúscula, devendo as restantes passarem a minúsculas. Caso o nome diga respeito a uma varável ou método, se o acrónimo for a primeira parte do nome então a primeira letra do acrónimo também deverá passar para minúscula.
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
Atributos
Os atributos das classes devem estar declarados um por linha.Variáveis Locais
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
void
metodo()
{
if
(condição)
{
// algum código
}
}
}