Revisão Java Básico Programação em Java Prof. Maurício Braga.
Princípios de projeto e boas práticas de programação em Java - Márcio Torres
-
Upload
tchelinux-slides -
Category
Documents
-
view
6.904 -
download
3
description
Transcript of Princípios de projeto e boas práticas de programação em Java - Márcio Torres
Princípios de projeto ...
... e boas práticas de programação em Java
Márcio TorresDesenvolvedor de Software (e Professor)
Patrocinadores
Patrocinadores
Patrocinadores
Agenda● Boas práticas lidando com ...
● Strings● Números● Coleções● Métodos● Estruturas
● e ...● dicas e princípios, digamos, transversalmente.
Prelúdio
Strings: concatene com StringBuilder● Evite a concatenação de Strings, se for o
caso, use StringBuilder.Ao invés disto:
String var = sobrenome + “, “ + nome + “; ”;
Faça isto:
String var = new StringBuilder(sobrenome) .append(“, “) .append(nome) .append(“; “);
CONHECER A APIVOCÊ DEVE
Cuidado para não reinventar a roda
Strings: declare Strings literalmente● Não use new para declarar uma String
Ao invés disto:
String var = new String(“Texto”);
Faça isto:
String var = “texto”;
Strings: compare com o método equals● Não use == para comparar Strings. O
operador compara a referência da variável.
Ao invés disto:
boolean igual = sobrenome == nome;
Faça isto:
boolean igual = sobrenome.equals(nome);
Strings: compare o literal com a variável● Evite comparar uma variável com uma
String, tu podes receber uma NullPointerException
Ao invés disto:
boolean igual = sobrenome.equals(“silva”);
Faça isto:
boolean igual = “silva”.equals(sobrenome);
Números: use primitivos sempre que possível● No Java existem duas maneiras de
representar caracteres, números e boleanos, usando primitivos (char, byte, short, int, long, float, double, boolean) ou suas versões Objeto (Character, Byte, Short, Integer, Long, Float, Double, Boolean).
● Evite usar Wrappers quando são realizados cálculos e a performance e o footprint sejam importantes
USE SEU IDECOM SABEDORIA
Aproveite os atalhos, geradores de código e demais recursos do seu IDE para tornar-se produtivo
Mas saiba se virar sem ele
Números: use BigDecimal para cálculos precisos● Evite usar double e float para operações que
necessitam de precisão.
Ao invés disto:
double salario = 2551.25;
Faça isto:
BidDecimal salario = BidDecimal.valueOf(2551.25);
Experimente programar usando a intenção, declare seu desejo e então subjugue o código a sua vontade ...
USE A FORÇA
Números: use Wrappers para representar o nulo● Mas cuidado com a NullPointerException
Ao invés disto:
double taxa;
Faça isto:
Double taxa;
Coleções: parametrize suas coleções● Não use arrays e evite usar ArrayList ou
HashSet sem parametrizar o tipo.
Ao invés disto:
String[] nomes = new String[10];
Faça isto:
List<String> nomes = new ArrayList<String>();
Coleções: devolva uma lista vazia ao invés de nulo● Evite devolver nulo.● Em um método que devolva uma coleção
prefira devolvê-la vazia.
Ao invés disto:
public List<Algo> getLista() {return lista;
}
Faça isto:
public List<Algo> getLista() {if (lista == null) return Collections.emptyList();
return lista;}
Ao desenvolver a API pública de seus módulos pergunte-se a cada tipo de entrada, válida ou inválida, qual o retorno que não surpreenderia ...
Coleções: sempre sobrescreva equals e hashCode● Os métodos equals e hashCode são usados
em conjuntos (Set) e outras coleções baseados em hash (como o HashMap).
Métodos: não passe nulo como parâmetros● Prefira a sobrecarga a passar nulo nos
parâmetros● Se o método tem muitos parâmetros aplique
a refatoração Objeto ParâmetroAo invés disto:
printer.print(null, null, 2, null, doc);
Faça isto:
printer.print(2, doc);
class Printer { public void print(int copias, Document doc) { }
NÃO SE REPITA
Projete tendo o princípio DRY (Don't Repeat Yourself) em mente. Cada parte de código deve ser expresso em único ponto e sem ambiguidades
Métodos: escreva métodos pequenos e legíveis● Se o método crescer muito decomponha em
métodos menores, aplique a refatoração Extrair Método
Estruturas: use Enumerados para opções● Não use Strings, Números ou Boleanos para
opções
Ao invés disto:
mailer.send(true);
Faça isto:
mailer.send(Prioridade.ALTA);
SEMPRE QUE UMCOMENTÁRIO VOCÊ FORADICIONAR, A SI MESMO
PERGUNTE: “COMO POSSO EUESSE CÓDIGO MELHORAR
POSSO PARA QUE DESNECESSÁRIO ESSE
COMENTÁRIO POSSA SER”
Estruturas: crie novas classes para grupos de dados● Evite grupos de dados criando novas classes● Evite a Obsessão Primitiva
Ao invés disto:
class Rota { int distancia;}
Faça isto:
class Rota { Distancia distancia;}
SIGA O PRINCÍPIO DE ACESSO UNIFORME
Forneça acesso às propriedades e serviços de seus objetos através de uma notação uniforme escondendo se eles são obtidos através de armazenamento ou computação ....
Bibliografia
Perguntas?
● marciojrtorres.blogspot.com● marciojrtorres at gmail.com
Contato