Você está na página 1de 4

29/04/2013

DCC / ICEx / UFMG

Definio de Idiomas Idiomas de Programao


Idiomas so padres de baixo nvel especficos de uma linguagem de programao Cada idioma descreve como resolver um problema de programao em uma determinada linguagem Idiomas facilitam a comunicao entre programadores
Aceleram o desenvolvimento Facilitam atividades de manuteno

Eduardo Figueiredo
http://www.dcc.ufmg.br/~figueiredo

DCC / ICEx / UFMG

Idiomas e Estilos
Um conjunto de idiomas definem um estilo de programao
O estilo de programao definido pela forma como so usadas as construes da linguagem

Idiomas em Java

Exemplos de idiomas
A forma como os loops so usados O formato de nomes A formatao do cdigo fonte

Eduardo Figueiredo
http://www.dcc.ufmg.br/~figueiredo

Idioma e Recomendao
Muitos dos idiomas so, na verdade, recomendao sobre o uso de construes da linguagem Outros idiomas dizem como implementar um padro de projeto usando uma linguagem
Exemplo: como implementar o padro Adapter em Java

Uma Classe por Arquivo


Deve-se declarar uma nica classe por arquivo Java
1

A nica classe do arquivo deve ser pblica para que outras classes tenham acesso

Exemplo
Arquivo Carro.java

public class Carro { String cor; int velocidadeAtual; void acelerar() {} void frear() {} }

29/04/2013

O Mtodo Main
Deve-se colocar o mtodo main() em uma classe separada
3 2

Ocultando Atributos
Atributos devem ser privados ou protegidos
5 4

Apenas cdigo de iniciao do sistema deve estar na classe que contm o mtodo main()

Mtodos get e set devem ser usados por outras classes para acessar os atributos

Exemplo
public class TesteCarro { public static void main(String[] args) { ... } }

public class Carro { private String cor; protected int velocidadeAtual = 0; public void acelerar() {...} public void frear() {...} public void setCor(String novaCor) { cor = novaCor; } public String getCor() { return cor; } }

Exemplo: Carro
public class Carro { private String cor; protected int velocidadeAtual = 0; public void acelerar() { velocidadeAtual++; } public void frear() { velocidadeAtual--; } public void setCor(String novaCor) { cor = novaCor; } public String getCor() { return cor; } public String toString() { return "Carro " + cor + " : " + velocidadeAtual; } } Carro.java public class CarroTeste { public static void main(String[] args) { Carro meuCarro = new Carro(); meuCarro.setCor("Preto"); System.out.println(meuCarro); } } CarroTeste.java

Conveno de Nomes
Deve-se usar camel case em nomes de classes, mtodos e atributos
6 7 8

Nome de classes deve ser um substantivo e iniciar com letra maiscula Nome de mtodos deve ser um verbo e iniciar com letra minscula Nome de atributos deve ser um adjetivo ou substantivo e iniciar com letra minscula

Endentao e Comentrios
Evidencie o aninhamento de estruturas por meio de endentao Separar por uma linha em branco a primeira linha de um bloco de comentrios da ltima linha do bloco de comandos que o antecede
Comentrios devem se referir ao cdigo que segue
11 9 9

Exemplo: Carro2
public class Carro2 { public static final int LIMITE = 150; protected int velocidadeAtual = 0; public void acelerar() { velocidadeAtual++; // Testar o limite de velocidade do carro. if (velocidadeAtual > LIMITE) { System.out.println("Bib bib bib."); velocidadeAtual = LIMITE; } } public void frear() { if (velocidadeAtual > 0) velocidadeAtual--; } }

10
linha em branco

11
comentrio

10

29/04/2013

Reduzir Escopo
Utilize blocos aninhados para declarar variveis locais de modo que tenham o menor escopo possvel 12
Blocos aninhados tambm so teis para delimitar a regio de um comentrio

Exemplo: Carro3
public class Carro3 { public static final int LIMITE = 150; protected int velocidadeAtual = 0; public void acelerar() { velocidadeAtual++; { String alerta = "Bib."; if (velocidadeAtual == LIMITE) System.out.println(alerta); } // Testar o limite de velocidade do carro. if (velocidadeAtual > LIMITE) { velocidadeAtual = LIMITE; } } ... }

12
bloco aninhado

Declaraes
Evite nomear variveis locais com o mesmo nome de variveis globais
Ou com nomes de mtodos da classe
16

Expresses
proibido o uso de goto
15

13

Evite o uso de operador ternrio ? quando uma das expresses contiver mais de um operador
Neste caso, use o comando if
public void fear() { velocidadeAtual = ( ( velocidadeAtual velocidadeAtual velocidadeAtual } velocidadeAtual < 0) ? == MIN ? STOPPED : min() ) : desacelerar();

Sempre que possvel, declare e inicialize as variveis em um 14 mesmo comando

Switch Case
Mantenha curto o cdigo de cada case de um switch
Em trono de 5 linhas Cdigo longo deve ser extrado para um mtodo
17

Default de um Switch
Sempre inclua uma opo default nas estruturas switch O default deve capturar somente as condies no previstas pelos case

19

Sempre termine o case com um comando break

20 18

29/04/2013

Repeties
No crie variveis temporrias apenas para trmino de uma repetio
Use os comando break para sair de um lao de repetio antes da condio de sada ser atingida Use os comando return para testar imediatamente a condio de sada
21

Expresses
Evite expresses lgicas complexas como condio de um if
Particione-as em vrios comandos if aninhados
22

23

Todos os blocos { } vazios devem receber um comentrio indicando que esto propositalmente vazios

Bibliografia
F. Buschmann et al. Pattern-Oriented Software Architecture: A System of Patterns. John Wiley & Sons, 1996.
Cap. 4 Idioms

A. von Staa. Programao Modular. Elsevier, 2000.


Apndices 3, 4 e 5