Sie sind auf Seite 1von 18

19/ 10/ 12

Boas Pr át icas em

Java – G uia Def init ivo

10/ 12 Boas Pr át icas em Java – G uia Def init ivo Blog Contato

pesquisar

Padrões de Projeto Portfólio Sobre Mim pesquisar Página inicial > Conceitos > Boas Práticas em

Página inicial > Conceitos > Boas Práticas em Java – Guia Definitivo

Boas Práticas em Java – Guia Definitivo

Posted by Flávio J. Mendes on 09/02/2012 in Conceitos, Tutoriais | 8 comments

Confesso que nunca fui um desenvolvedor muito adepto a padronizações no que eu codificava. Porém quando mudei de empresa fui, de certa forma, forçado a aprender alguns padrões e tive que admitir que realmente ajuda muito na manutenibilidade de uma aplicação. Principalmente quando é desenvolvida por um grande grupo de desenvolvedores.

Eis que encontrei uma documentação muito útil no site da Oracle, traduzi, adaptei e agora compartilho com vocês:

1 – Introdução

1.1 – Por que padronizar?

Convenções de código são importantes para os programadores pelos seguintes motivos:

80% do tempo gasto em codificação de um software é na fase de manutenção;importantes para os programadores pelos seguintes motivos: Dificilmente qualquer software é mantido por toda a sua

Dificilmente qualquer software é mantido por toda a sua vida pelo autor original;em codificação de um software é na fase de manutenção; Convenções de código melhoram a legibilidade

Convenções de código melhoram a legibilidade do software, permitindo que os desenvolvedores entendam o código de forma mais rápida e completamente;software é mantido por toda a sua vida pelo autor original; Se você enviar o seu

Se você enviar o seu código-fonte como um produto, você precisa ter certeza de que é bem feito e limpo como qualquer outro produto que você criar.entendam o código de forma mais rápida e completamente; 2 – Nomeação de Arquivos 2.1 –

2 – Nomeação de Arquivos

2.1 – Sufixos

Os arquivos Java possuem os seguintes sufixos (extensões):

Código Fonte: “.java”;Os arquivos Java possuem os seguintes sufixos (extensões): Classe compilada : “.class”. www. f laviojm endes.

Classe compilada : “.class”.seguintes sufixos (extensões): Código Fonte: “.java”; www. f laviojm endes. com / blog/ 2012/ 02/ 09/

19/ 10/ 12

Boas Pr át icas em

Java – G uia Def init ivo

3 – Organização dos Arquivos

Evite arquivos com mais de 2000 linhas, pois eles se tornam arquivos pesados.

3.1 – Arquivos de Código Fonte (.java)

Cada arquivo Java contém uma única classe ou interface pública. Quando as classes privadas e interfaces estão associadas a uma classe pública, você pode colocá-los no arquivo de origem igual ao da classe pública. A classe pública deve ser a primeira classe ou interface no arquivo.

Os arquivos Java seguem a seguinte ordem:

Comentário de Cabeçalho;no arquivo. Os arquivos Java seguem a seguinte ordem: Declaração de pacotes e imports; Declarações de

Declaração de pacotes e imports;Java seguem a seguinte ordem: Comentário de Cabeçalho; Declarações de Classes e Interfaces. 3.1.1 – Comentário

Declarações de Classes e Interfaces.de Cabeçalho; Declaração de pacotes e imports; 3.1.1 – Comentário de Cabeçalho Todos os códigos fonte

3.1.1 – Comentário de Cabeçalho

Todos os códigos fonte devem possuir um cabeçalho que contenha o nome da Classe, versão, data e informações de direitos autorais.

1

/*

2

*Classe

3

*

4

*Versão

5

*

6

*Data

7

*

8

*Copyright

9

*/

3.1.2 – Declaração de Pacotes e Imports

?

A primeira linha que não seja comentário, deve ser a declaração do pacote. As linhas seguintes podem ser os

Imports.

1

package br.com.flaviojmendes;

2

3

import java.awt.Robot;

3.1.3 – Declaração de Classes e Interfaces

?

3.1.3 – Declaração de Classes e Interfaces ? O fluxo a seguir descreve as seções da

O fluxo a seguir descreve as seções da declaração de uma Classe ou Interface na ordem em que devem

aparecer.

1. Comentário de Documentação da Classe ou Interface;

2. Declaração da Classe ou Interface;

3. Comentário de Implementação da Classe ou Interface;

1. Este comentário deve conter todas as informações da Classe ou Interface mais genéricos e que

19/ 10/ 12

Boas Pr át icas em

Java – G uia Def init ivo

não eram apropriados para o comentário de documentação da Classe ou Interface.

4. Variáveis estáticas (static) da Classe;

1. Primeiro as públicas (public), depois as protegidas (protected), depois as default (sem explicitar), e então as privadas (private).

5. Variáveis instanciáveis;

1. Primeiro as públicas (public), depois as protegidas (protected), depois as default (sem

explicitar), e então as privadas (private).

6. Construtores;

7. Métodos.

1. Esses métodos devem ser agrupados por funcionalidade ao invés de escopo ou acessibilidade. Por exemplo, um método privado pode estar entre dois métodos públicos. O objetivo é tornar a leitura e compreensão do código mais fácil.

4 – Indentação

Muita gente pode achar “frescura” esse capítulo, entretanto é algo que quando comecei a me policiar para usar essas padronizações senti logo o quanto ajuda, e finalmente parei de me preocupar em rolar a tela para a direita infinitamente até chegar ao fim da linha.

4.1 – Tamanho da Linha

Evite linhas com mais de 80 colunas, visto que a maioria dos desenvolvedores não possuem recursos para visualizar mais que isso.

Obs.: Para uso em documentações, procure usar no máximo 70 colunas.

4.2 – Quebra de Linha

Quando o código não couber em uma linha (respeitando o limite de 80 colunas), quebre-o seguindo os princípios:

Quebre após a vírgula;o limite de 80 colunas), quebre-o seguindo os princípios: Quebra antes de um operador; Prefira quebras

Quebra antes de um operador;quebre-o seguindo os princípios: Quebre após a vírgula; Prefira quebras de linha a um nível mais

Prefira quebras de linha a um nível mais alto;Quebre após a vírgula; Quebra antes de um operador; Alinhe a linha de novo com o

Alinhe a linha de novo com o início da expressão no mesmo nível da linha anterior;um operador; Prefira quebras de linha a um nível mais alto; Se as regras anteriores levarem

Se as regras anteriores levarem a um código confuso ou o código ficar esmagado contra a margem direita, coloque apenas 8 espaços em seu lugar.o início da expressão no mesmo nível da linha anterior; Alguns exemplos abaixo: Chamadas de métodos

Alguns exemplos abaixo:

Chamadas de métodos

1

meuMetodo(variavelLong1,variavelLong2,variavelLong3,

2

variavelLong4,variavelLong5);

3

4

var=meuMetodo1(variavelLong1,

5

meuMetodo2(variavelLong2,

6

variavelLong3));

?

Seguem-se dois exemplos de como quebrar uma expressão aritmética. O primeiro é o preferido, uma vez que a quebra ocorre fora da expressão entre parênteses, que é a um nível superior.

19/ 10/ 12

Boas Pr át icas em

Java – G uia Def init ivo

1

nomeLong1=nomeLong2*(nomeLong3+nomeLong4-nomeLong5)

2

+4*nomeLong6;//PREFERÍVEL

3

4

nomeLong1=nomeLong2*(nomeLong3+nomeLong4

5

-nomeLong5)+4*nomeLong6;//EVITAR

?

Seguem-se dois exemplos de indentação de declaração de métodos. O primeiro é o caso convencional. A segunda iria deslocar a segunda e terceira linhas para a extrema direita se fosse utilizada a indentação convencional. Por isso, recuamos apenas 8 espaços.

1

//INDENTAÇÃOCONVENCIONAL

2

meuMetodo(int numero,ObjectobjetoFlavio,StringobjetoComBr,

3

ObjectmaisUm){

4

5

}

6

7

//RECUAR8ESPAÇOSPARAEVITARRECUOEXCESSIVO

8

private static synchronized metodoFlavioJMendes(int numero,

9

ObjectobjetoFlavio,StringobjetoComBr,

10

ObjectmaisUm){

11

12

}

?

Quebra de linha para declaração de IF’s devem usar a regra dos 8 espaços, uma vez que o recuo convencional torna difícil ver o corpo. Por exemplo:

1

//NÃOUSEESSAINDENTAÇÃO

2

if ((condicao1&&condicao2)

3

||(condicao3&&condicao4)

4

||!(condicao5&&condicao6)){//QUEBRASRUINS

5

metodoFazAlgumaCoisa();

//DIFÍCILVISUALIZAÇÃO

6

}

7

8

//USEESSAINDENTAÇÃO

9

if ((condicao1&&condicao2)

10

||(condicao3&&condicao4)

11

||!(condicao5&&condicao6)){

12

metodoFazAlgumaCoisa();

13

}

14

15

//OUFAÇAASSIM

16

if ((condicao1&&condicao2)||(condicao3&&condicao4)

17

||!(condicao5&&condicao6)){

18

metodoFazAlgumaCoisa();

19

}

5 – Comentários

?

Programas em Java podem ter dois tipos de comentários:comentários de implementação e comentários de documentação. Comentários de aplicação são os encontradosem C + +, que são delimitados por / * … * /, e / /. Comentários de documentação (conhecidos como “comentários doc”) sãoJava-only, e são delimitados por / ** … * /. Comentários de documentação podem ser extraídos para arquivos HTMLusando a ferramenta javadoc.

Comentários de implementação são destinados a comentar o código ou para comentários sobre

19/ 10/ 12

Boas Pr át icas em

Java – G uia Def init ivo

uma implementaçãoparticular. Comentários de documentação são destinados adescrever a especificação do código, a partir de uma perspectiva independente de implementação. Para serem lidos por desenvolvedores que não necessariamente possuem o código fonte em mãos.

Os comentários devem ser usados ​​para dar uma visão geral do código e fornecer informações adicionais que não estão prontamente disponíveis no próprio código. Os comentários devem conter apenas informações que sejam relevantes para a leitura e compreensão do programa.

5.1 Implementation Comment Formats

Existem quatro tipos de Comentários de Implementação: bloco, de uma linha, trailing, e de final de linha.

5.1.1 Bloco de Comentários

Blocos de comentário são usados ​​para fornecer descrições de arquivos, métodos, estruturas de dados e algoritmos.Blocos de comentário podem ser utilizados no início de cada arquivo e antes de cada método. Eles podem também ser utilizados em outros locais, tais como dentro de métodos.Blocos de comentário que estejam dentro de uma função ou método devem ser indentados para o mesmo nível que o código que descrevem.

Um bloco de comentário deve ser precedido por uma linha em branco para separá-lo do resto do código.

1 /*

2 *Esseéumblocodecomentário.

3 */

5.1.2 – Comentários de uma linha

?

Comentários curtos podem aparecer em uma única linha recuada para o nível do código que se segue. Se um comentário não pode ser escrito em uma única linha, ele deve seguir o formato de bloco de comentário. Um comentário de uma linhadeve ser precedido por uma linha em branco.

1

if (condicao){

2

3

/*Trataacondiçãoacima.*/

4

5

}

5.1.3 – Trailing

?

Comentários muito curtos podem aparecer na mesma linha docódigo que descrevem, mas devem ser deslocados o suficiente para separá-los das declarações. Se mais de um breve comentário aparece em um pedaço de código, todos eles deverão ser recuado para o mesmo nível.

1

if (a==2){

2

return TRUE;

/*casoespecial*/

3

}else{

4

returnisImpar(a);

/*éimpar*/

5

}

?

19/ 10/ 12

Boas Pr át icas em

Java – G uia Def init ivo

5.1.4 – Final de Linha

O delimitador / / pode comentar uma linha completa ou apenas uma linha parcial. Ele não deve ser utilizado em linhas consecutivas para comentários de texto, no entanto, pode ser utilizado em linhas consecutivas para comentar seções de código.

1

if (condicao>1){

2

3

//Fazumapirueta.

4

5

}

6

else {

7

return false;

//Eisaquestão.

8

}

9

//if(daianeDosSantosMode>1){

10

//

11

// //FazerumTwistCarpado.

12

//

13

//}

14

//else{

15

// returnfalse;

16

//}

6 – Declarações

6.1 – Número por Linha

?

Uma declaração por linha é o recomendado, visto que facilita o comentário. Exemplificando, é melhor isso

1 int altura; //alturadatabela

2 int largura; //larguradatabela

do que isso

1

int altura,largura;

Nunca instancie tipos diferentes na mesma linha

1

int qtdCasas, numerosCasas[];//ERRADO!

6.2

– Inicialização

?

?

?

Procure inicializar variáveis ​​locais onde elas estão declaradas.A única razão para não inicializar uma variável onde estádeclarada é se o valor inicial depende de algum cálculo que ocorre primeiro.

6.3 – Localização

Coloque declarações apenas no início de blocos. (Um bloco équalquer código entre chaves ”{” e ”}”.) Não espere paradeclarar variáveis ​​até sua primeira utilização, pois podeconfundir o programador desavisado e dificultar a portabilidade do código dentro do escopo.

1 void meuMetodo(){

2 int int1=0;

//iníciodoblocodométodo

?

meuMetodo(){ 2 int int1= 0 ; //iníciodoblocodométodo ? www. f laviojm endes. com / blog/ 2012/

19/ 10/ 12

Boas Pr át icas em

Java – G uia Def init ivo

3

 

4

 

if (condicao){

5

int int2=0; //iníciodoblocodoif

6

 

7

 

}

8

}

6.4

– Declaração de Classes e Interfaces

Ao codificar classes e interfaces Java, as seguintes regras de formatação devem ser seguidas:

Não há espaço entre um nome do método e o parêntese ”(“começando sua lista de parâmetros;as seguintes regras de formatação devem ser seguidas: Abrir chaves ”{“ aparece no final da mesma

Abrir chaves ”{“ aparece no final da mesma linha com ainstrução de declaração;e o parêntese ”(“começando sua lista de parâmetros; Fechar chaves ”}” inicia uma linha por si

Fechar chaves ”}” inicia uma linha por si só recuado paracoincidir com a sua declaração de abertura correspondente. Exceto quando se trata de uma declaração nula, o ”}” deve aparecer imediatamente após a ”{“;no final da mesma linha com ainstrução de declaração; 1 class Exemplo extends Object{ 2 int

1

class Exemplo extends Object{

2

int ivar1;

3

int ivar2;

4

5

Exemplo(int i, int j){

6

 

ivar1=i;

7

ivar2=j;

8

}

9

10

int metodoVazio(){}

11

12

13

}

Métodos são separados por uma linha em branco.9 10 int metodoVazio(){} 11 12 13 } 7 – Expressões 7.1 – Expressões Simples Cada

7 – Expressões

7.1 – Expressões Simples

Cada linha deve conter no máximo uma expressão:

1 argv++;

//Certo

2 argc--;

//Certo

3 argv++;argc--;//ERRADO!

7.2 – Expressões Compostas

?

?

Instruções compostas são declarações que contêm listas de instruções entre chaves “{instruções}”. Veja as seguintes seções para obter exemplos.

As declarações fechadas devem ser indentadas um nível mais do que o comando composto;Veja as seguintes seções para obter exemplos. A chave de abertura deve estar no final da

A chave de abertura deve estar no final da linha que se inicia a expressão composta; a chave de fechamento deve começar uma linha e ser recuado para o início da expressão composta;ser indentadas um nível mais do que o comando composto; www. f laviojm endes. com /

19/ 10/ 12

Boas Pr át icas em

Java – G uia Def init ivo

10/ 12 Boas Pr át icas em Java – G uia Def init ivo Chaves são

Chaves são usadas em torno todas as declarações, até mesmo declarações individuais, quando eles fazem parte de uma estrutura de controle, como uma instrução if-else ou for. Isto torna mais fácil adicionar declarações sem acidentalmente introduzir erros devido a esquecer de adicionar chaves.

7.3 Expressões return

A instrução de retorno com um valor não deve usar parênteses, a menos que faça o valor de retorno mais óbvio de alguma forma.

1

return;

2

3

return disco.tamanho();

4

5

return (tamanho?tamanho:tamanhoPadrao);

7.4

If, if-else, if else-if else

Devem seguir o padrão:

1

if (condicao){

2

 

instrucoes;

3

}

4

5

if (condicao){

6

 

instrucoes;

7

}

else {

8

instrucoes;

9

}

10

11

if (condicao){

12

 

instrucoes;

13

}

else if (condicao){

14

instrucoes;

15

}

else {

16

instrucoes;

17

}

?

?

Atenção: Cláusulas IF SEMPRE devem conter chaves “{” e “}”. Nunca faça isso

1

if (condicao)//EVITE!NÃOOMITAASCHAVES{}!

2

instrucao;

7.5

Expressões “for”

Devem seguir o padrão:

1

for (inicializacao;condicao;passo){

2

instrucoes;

3

}

?

?

Um for vazio (aquele em que todo o trabalho é feito na inicialização, condição e cláusulas de atualização) deve ter a seguinte forma:

1

for (inicializacao;condicao;passo);

?

19/ 10/ 12

Boas Pr át icas em

Java – G uia Def init ivo

Ao usar o operador vírgula na cláusula de inicialização ou atualização de um for, evitar a complexidade de usar mais de três variáveis. Se necessário, use declarações separadas antes do laço for (para a cláusula de inicialização) ou no final do loop (a cláusula de atualização).

7.6 – Expressões “while”

O while deve ser implementado da seguinte forma:

1

while (condicao){

2

instrucoes;

3

}

Um while vazio deve ser implementado da seguinte forma:

1

while (condicao);

7.7

– Expressões do-while

?

?

Uma expressão do-while deve ser implementada da seguinte maneira:

1

2

3

7.8

do { instrucoes;

} while (condicao);

– Expressões switch

Um switch deve seguir o seguinte padrão:

1

switch (condicao){

2

case ABC:

3

instrucoes;

4

/*passadireto*/

5

case DEF:

6

intrucoes;

7

break;

8

case XYZ:

9

intrucoes;

10

break;

11

default:

12

intrucoes;

13

break;

14

}

?

?

Toda vez que um case não inclui uma instrução break, adicione um comentário onde a instrução break seria. Isto é mostrado no exemplo de código anterior.

Cada instrução switch deve incluir um default. O break no default é redundante, mas evita que um erro fall- through ocorre se mais tarde um outro case for adicionado.

7.9 – Expressões try-catch

O bloco de try-catch deve seguir o seguinte formato:

O bloco de try-catch deve seguir o seguinte formato: www. f laviojm endes. com / blog/

19/ 10/ 12

Boas Pr át icas em

Java – G uia Def init ivo

1

try {

2

instrucoes;

3

}

catch (ExceptionClasse){

4

instrucoes;

5

}

?

A instrução try catch-também pode ser seguida por, finally, que é executado independentemente de o bloco try ser executado com êxito.

1

try {

2

 

instrucoes;

3

}

catch (ExceptionClasse){

4

instrucoes;

5

}

finally {

6

instrucoes;

7

}

8 – Espaços em Branco

8.1 – Linhas em Branco

?

As linhas em branco melhoram a legibilidade organizando seções de código que são logicamente relacionadas.

Duas linhas em branco devem ser sempre utilizados nas seguintes circunstâncias:

Entre seções de um código fonte;devem ser sempre utilizados nas seguintes circunstâncias: Entre as definições de Classe e Interface. Uma linha

Entre as definições de Classe e Interface.circunstâncias: Entre seções de um código fonte; Uma linha em branco deve ser sempre utilizada nas

Uma linha em branco deve ser sempre utilizada nas seguintes circunstâncias:

Entre métodos;deve ser sempre utilizada nas seguintes circunstâncias: Entre as variáveis locais e a primeira instrução de

Entre as variáveis locais e a primeira instrução de um método;utilizada nas seguintes circunstâncias: Entre métodos; Antes de um bloco de comentário ou de um comentário

Antes de um bloco de comentário ou de um comentário de linha única;as variáveis locais e a primeira instrução de um método; Entre seções lógicas de um método

Entre seções lógicas de um método para facilitar a leitura.bloco de comentário ou de um comentário de linha única; 8.2 – Espaços Espaços devem ser

8.2 – Espaços

Espaços devem ser usados nas seguintes circunstâncias:

Uma palavra chave seguida de parênteses deve ser separada por uma espaçoEspaços devem ser usados nas seguintes circunstâncias: 1 while ( true ){ 2 3 } ?

1

while (true){

2

3

}

?

Note-se que um espaço em branco não deve ser usado entre um nome de método e da sua abertura de parênteses. Isto ajuda a distinguir palavras-chave de chamadas de método.

O espaço deve aparecer após vírgulas em uma lista de argumentos;ajuda a distinguir palavras-chave de chamadas de método. Todos os operadores binários, exceto. devem ser separadas

Todos os operadores binários, exceto. devem ser separadas de seus operandos por espaços. Os espaços em branco nunca devem separar operadores unários, como incremento (“+ +”) e decrementodeve aparecer após vírgulas em uma lista de argumentos; www. f laviojm endes. com / blog/

19/ 10/ 12

Boas Pr át icas em

Java – G uia Def init ivo

(“-”) de seus operandos.

1

a+=c+d;

2

a=(a+b)/(c*d);

3

4

while (d++=s++){

5

n++;

6

}

7

printSize("tamanhoé"+tamanho+"\n");

Expressões em um for devem ser separadas por espaçoprintSize( "tamanhoé" +tamanho+ "\n" ); 1 for (expr1;expr2;expr3) Casts devem ser sempre seguidos

1

for (expr1;expr2;expr3)

Casts devem ser sempre seguidos por um espaço em brancodevem ser separadas por espaço 1 for (expr1;expr2;expr3) 1 meuMetodo((byte)aNum,( Object )x); 2 meuMetodo(( int

1 meuMetodo((byte)aNum,(Object)x);

2 meuMetodo((int)(cp+5),((int)(i+3))+1);

9 – Convenções de Nomes

As convenções de nomenclatura tornam os programas mais compreensíveis, tornando-os mais fáceis de ler. Eles podem também fornecer informação sobre a função do identificador, por exemplo, quer se trate de um pacote, constante, ou de classe que pode ser útil na compreensão do código.

9.1 – Pacotes

O prefixo do nome do pacote original é sempre escrito em letras minúsculas todo-ASCII e deve ser um dos nomes de domínio de nível superior, atualmente com, edu, gov, mil, net, org, ou um dos códigos de duas letras identificando os países, tal como especificado na norma ISO 3166, 1981.

Componentes subseqüentes do nome do pacote varia de acordo com uma organização próprias convenções de nomenclatura internos. Tais convenções podem especificar que certos componentes do nome do diretório têm divisão, departamento, projeto, máquina, ou nomes de login.

Ex:

br.com.flaviojmendes

9.2 – Classes

Os nomes de classe devem ser substantivos, em maiúsculas e minúsculas com a primeira letra de cada palavra interna em maiúscula. Tente manter seus nomes de classe simples e descritivos. Evite siglas e abreviaturas (a menos que a sigla seja muito mais usada que a forma longa, como URL ou HTML).

Ex:

class Controle;

class Testador;

9.3 – Interfaces

19/ 10/ 12

Boas Pr át icas em

Java – G uia Def init ivo

Nomes de interface devem ser capitalizados como nomes de classes.

Ex:

interface Armazenamento;

9.4 – Métodos

Métodos devem ser verbos, em maiúsculas e minúsculas coma letra minúscula em primeiro lugar, e com a primeira letra de cada palavra interna em maiúscula.

Ex:

visitarFlavioMendes();

comentarPosts();

9.5 – Variáveis

Exceto para as variáveis​​, todas as instâncias, constantes, classes estão em maiúsculas e minúsculas com uma letra minúscula em primeiro lugar. Palavras internas começam com letras maiúsculas. Os nomes de variáveis ​​ não deve começar com underscore _ ou sinal de dólar $ , mesmo que ambos sejam permitidos.

Os nomes de variáveis devem ser curtos, mas significativos. A escolha de um nome da variável deve ser mnemônico, isto é, concebido para indicar ao observador casual a intenção da sua utilização. Variáveis de apenas uma letra ​​devem ser evitadas, exceto para variáveis temporárias ”descartáveis​​”. Os nomes comuns para variáveis ​​temporárias são i, j, k, m, n e para inteiros, c, d, e para caracteres.

Ex:

1

int

i;

2

char

c;

3

float

distanciaNominal;

9.6 – Constantes

?

c; 3 float distanciaNominal; 9.6 – Constantes ? Os nomes de constantes de classes e de

Os nomes de constantes de classes e de constantes ANSIdeve ser todo em letras maiúsculas com palavras separadas por sublinhados (“_”). (Constantes ANSI devem ser evitadas, para facilidade de depuração.)

Ex:

1

2

3

4

5

static final int TAMANHO_MAXIMO=4;

static final int PESO_MAXIMO=999;

static final int CPU=1;

10 – Práticas de Programação

?

10.1 - Fornecendo acesso a variáveis ​​de instância e de classe

19/ 10/ 12

Boas Pr át icas em

Java – G uia Def init ivo

Apenas deixe uma variável ou classe públicas se tiver um bom motivo para isso.

10.2 - Referindo-se a variáveis ​​e métodos de classe

Evite o uso de um objeto para acessar uma classe (estática) ou método. Use um nome de classe em seu lugar. Por exemplo:

1

metodo();

//OK

2

Classe.metodo();

//OK

3

objetoClasse.metodo(); //EVITE!

10.3

– Constantes

?

Constantes numéricas (literais) não devem ser codificadas diretamente, exceto para -1, 0 e 1, que pode aparecer em um loop for como os valores do contador.

10.4 – Atribuições de Variáveis

Evite atribuir o mesmo valor a diversas variáveis ​​em uma única instrução. É difícil de ler. Exemplo:

1

altura1=altura2=170;//EVITE!

?

Não use o operador de atribuição em um lugar onde ele pode ser facilmente confundido com o operador de igualdade. Exemplo:

1

if (c++=d++){

//NÃOFAZERISSO!

2

3

}

Deverá ser assim:

1

if ((c++=d++)!=0){

2

3

}

?

?

Não utilize atribuições incorporadas em uma tentativa de melhorar o desempenho de tempo de execução. Este é o trabalho do compilador. Exemplo:

1

d=(a=b+c)+r;

Deve ser assim:

1

a=b+c;

2

d=a+r;

10.5

– Práticas Diversas

10.5.1 – Parênteses

//EVITE!

?

?

É geralmente uma boa idéia usar parênteses em expressõesque envolvam operadores mistos para evitar problemas de precedência de operadores. Mesmo se o operador precedenteparece claro para você, pode não ser para os outros, você não deve presumir que outros programadores sabem precedência, assim

19/ 10/ 12

Boas Pr át icas em

Java – G uia Def init ivo

como você.

1 if (a==b&&c==d) //EVITE!

2 if ((a==b)&&(c==d))//CERTO

10.5.2 – Retorno de Valores

?

Tente fazer com que a estrutura do seu programa decorresponda à intenção. Exemplo:

1

if (

2

3

expressaoBooleana){

4

return true;

5

} else {

6

return false;

7

}

Deve ser escrito assim

1

return expressaoBooleana;

Similarmente,

1

if (condicao){

2

return x;

3

}

4

return y;

deve ser escrito assim

1

return (condicao?x:y);

10.5.3 – Comentários Especiais

?

?

?

?

Use XXX em um comentário para sinalizar algo que é errado, mas funciona. Use FIXME para marcar algo que é errado e não funciona.

Use FIXME para marcar algo que é errado e não funciona. Espero comentários de como essa

Espero comentários de como essa documentação pode tê-los ajudado!! Até a próxima!!!

Fonte (http://www.oracle.com/technetwork/java/javase/documentation)

8 Comments Java - Como Programar - 8ª Ed. 2010 R$215,10

8 Comments

R$215,10

Saraiva.com.br

Java - Como Programar - 8ª Ed. 2010 R$215,10 Saraiva.com.br 1. Fernando Franzini 9 de Fevereiro
Java - Como Programar - 8ª Ed. 2010 R$215,10 Saraiva.com.br 1. Fernando Franzini 9 de Fevereiro

1.

- Como Programar - 8ª Ed. 2010 R$215,10 Saraiva.com.br 1. Fernando Franzini 9 de Fevereiro de

Fernando Franzini 9 de Fevereiro de 2012

19/ 10/ 12

Boas Pr át icas em

Java – G uia Def init ivo

Pois é, para vc ver…. Existe um empresas que não contratem gente para “estragar” o codigo da solução.

A primeira coisa que eu pergunto para alguem que se diz programador java é se ele sabe a convenção

de código.

2.

2.  
 

Pois é Fernando, Infelizmente muitas empresas não valorizam esse tipo de conhecimento. Muitos gerentes inclusive consideram perda de tempo documentação e padronização. É algo que temos que mudar!

3.

3.  
 

13

Ótimo post Flávio, vou recomendar a leitura deste para alguns colegas (Daniel)!

4.

4.  
 

13

O

pessoal precisa mesmo ler isso! Aquela época era uma bagunça só os códigos!

5.

5.  
 

Felipe Marinho

13

Muito bom o seu post Flavio. Parabens

6.

6.  
 

luyz

Otimo post, são dicas simples na maioria, mas que a maioria não tem o hábito nem costume de utilizar, sem que começo a escrever algo, tento manter esses padrões se não nem eu mesmo me acho ao reler um código depois de um tempo.

19/ 10/ 12

Boas Pr át icas em

Java – G uia Def init ivo

Abraços e Até +

7.

7.  
 

Cleo Hickmann Junior

15

Muito bom o post, Flávio. Sou programador Delphi mas pretendo estudar e me especializar em Java para abrir os horizontes. As boas práticas de programação – incluindo padronização de código – devem ser sempre seguidas seja qual for a linguagem utilizada. Pretendo usar teu blog como referência daqui pra diante. Parabéns pelo ótimo trabalho.

Abraço.

 

8.

8.

sandrielle

eu achei muito interesante

Leave a Reply

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Nome *

será publicado. Campos obrigatórios marcados com * Nome * Email * Website Comentário Pode usar estas

Email *

Campos obrigatórios marcados com * Nome * Email * Website Comentário Pode usar estas etiquetas HTML

Website

Campos obrigatórios marcados com * Nome * Email * Website Comentário Pode usar estas etiquetas HTML

Comentário

marcados com * Nome * Email * Website Comentário Pode usar estas etiquetas HTML e atributos:

Pode usar estas etiquetas HTML e atributos: <ahref=""title=""><abbrtitle=""><acronym title=""><b><blockquotecite=""><cite><code><deldatetime=""><em><i><q cite=""><strike><strong>

Submit Comment
Submit Comment

Quero ser notificado de comentários adicionais por email.Submit Comment Quero ser notificado de novos artigos por email. www. f

Quero ser notificado de novos artigos por email.Quero ser notificado de comentários adicionais por email. www. f laviojm endes. com / blog/ 2012/

19/ 10/ 12

Boas Pr át icas em

Java – G uia Def init ivo

Mais Lidos

Ads

Android Lendo e Escrevendo Arquivos PDF com Java Ads TDC 2012 – Goiânia Facebook Flávio Mendes

TDC 2012 – Goiânia

e Escrevendo Arquivos PDF com Java Ads TDC 2012 – Goiânia Facebook Flávio Mendes no Facebook

Facebook

Arquivos PDF com Java Ads TDC 2012 – Goiânia Facebook Flávio Mendes no Facebook Curtir 75
Curtir
Curtir

75 pessoas curtiramFlávio Mendes.

no Facebook Curtir 75 pessoas curtiram Flávio Mendes . Guilherme Ricardo Diogo Laura Rosa Michael Wallyson
curtiram Flávio Mendes . Guilherme Ricardo Diogo Laura Rosa Michael Wallyson Pedro Cezar Thiago Plug-in social