Wiki
Convenção desenvolvedor/Convenção código/Instruções
Table of Contents [-]
Instruções #
Instruções simples #
Cada linha deverá conter no máximo uma instrução. Exemplos:
argv++; // correto argc++; // correto argv++; argc--; // evitar!
Instruções compostas #
Instruções compostas são instruções que possuem uma lista de instruções contidas entre chaves, isto é, no bloco delimitado por “{” e “}”. Veja alguns exemplos nas sessões seguintes.
Eis algumas regras a serem seguidas no que tange as instruções compostas:
- instruções contidas no bloco devem ser indentadas em um ou mais níveis além do início da instrução composta;
- a chave aberta “{“ deve estar no final da linha onde se inicia a instrução composta, e a chave fechada “}” deve começar em uma linha indentada com o início da instrução composta;
- as chaves são usadas ao redor de todas as instruções, exceto para instruções simples, quando elas são partes de uma estrutura de controle, tais como uma instrução if-else ou for. Isso faz com que seja mais fácil incluir instruções sem a introdução acidental de bugs acidentais por se esquecer de se abrir as chaves.
Instruções de retorno #
A instrução return com um valor não deverá usar parênteses a menos que este valor torne-se mais claro com o uso destes. Eis alguns exemplos:
return; return meuDisco.calcularTamanho(); return (tamanho != null ? tamanho : tamanhoPadrao);
Instruções condicionais “if” #
A classe de instruções condicionais “if-else” deverá utilizar uma das seguintes formas:
if (condição) { instruções; } if (condição) { instruções; } else { instruções; } if (condição) { instruções; } else if (condição) { instruções; } else if (condição) { instruções; } else { instruções; }
As instruções condicionais do tipo “if” devem sempre utilizar chaves {}. Evite usar a seguinte forma propensa a erros:
if (condição) // evite omitir as chaves neste caso! instrução;
Instruções de repetição “for” #
Uma instrução de repetição do tipo “for” deverá ter a seguinte forma:
for (inicialização; condição; iteração) { instruções; }
Quando utilizar o operador vírgula na cláusula de inicialização ou iteração de uma instrução “for”, evite usar mais de três variáveis. Se necessário, use instruções em separado antes do laço “for” (para a cláusula de inicialização) ou ao final do loop (para a cláusula de iteração).
Instruções de repetição “while” #
Uma instrução de repetição do tipo “while” deverá ter a seguinte forma:
while (condição) { instruções; }
Instruções de repetição “do-while” #
Uma instrução de repetição do tipo “do-while” deverá ter a seguinte forma:
do { instruções; } while (condição);
Instruções condicionais “switch” #
Uma instrução condicional do tipo “switch” deverá utilizar a seguinte forma:
switch (variável) { case ABC: instruções; /* falsa passagem */ case DEF: instruções; break; case XYZ: instruções; break; default: instruções; break; }
Toda vez que houver um caso em que ocorra falsa passagem, isto é, quando não houver a instrução break, inclua um comentário justificando essa abordagem justamente onde o break deveria estar. De qualquer forma, sempre que possível evite utilizar a falsa passagem.
Toda instrução switch deverá apresentar um caso padrão através da cláusula default. O uso do break em uma instrução default é redundante, porém previne erros de falsas passagens se outra instrução case for adicionada ao final.
Instruções de tratamento de exceção “try-catch” #
Uma instrução do tipo “try-catch” deverá ter o seguinte formato:
try { instruções; } catch (ClasseException e) { instruções; }
Uma instrução do tipo “try-catch” também pode ser seguida da instrução “finally”:
try { instruções; } catch (ClasseException e) { instruções; } finally { instruções; }