Princípios de projeto e boas práticas de programação em Java - Márcio Torres

30
Princípios de projeto ... ... e boas práticas de programação em Java Márcio Torres Desenvolvedor de Software (e Professor)

description

Palestra sobre como aplicar princípios de projeto orientado a objetos e fazer código confiável e eficiente em Java. Serão abordadas boas práticas lidando com Strings, números, coleções, nulos, assinaturas de métodos, passagem de parâmetros, etc, e como encontrar maus cheiros no código e aplicar refatorações.Autor: Márcio Josué Ramos Torres (IFRS)

Transcript of Princípios de projeto e boas práticas de programação em Java - Márcio Torres

Page 1: 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)

Page 2: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

Patrocinadores

Page 3: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

Patrocinadores

Page 4: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

Patrocinadores

Page 5: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

Agenda● Boas práticas lidando com ...

● Strings● Números● Coleções● Métodos● Estruturas

● e ...● dicas e princípios, digamos, transversalmente.

Page 6: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

Prelúdio

Page 7: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

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(“; “);

Page 8: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

CONHECER A APIVOCÊ DEVE

Cuidado para não reinventar a roda

Page 9: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

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”;

Page 10: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

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);

Page 11: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

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);

Page 12: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

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

Page 13: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

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

Page 14: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

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);

Page 15: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

Experimente programar usando a intenção, declare seu desejo e então subjugue o código a sua vontade ...

USE A FORÇA

Page 16: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

Números: use Wrappers para representar o nulo● Mas cuidado com a NullPointerException

Ao invés disto:

double taxa;

Faça isto:

Double taxa;

Page 17: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

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>();

Page 18: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

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;}

Page 19: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

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 ...

Page 20: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

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).

Page 21: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

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) { }

Page 22: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

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

Page 23: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

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

Page 24: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

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);

Page 25: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

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”

Page 26: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

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;}

Page 27: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

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 ....

Page 28: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

Bibliografia

Page 29: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

Perguntas?

Page 30: Princípios de projeto e boas práticas de programação em Java - Márcio Torres

● marciojrtorres.blogspot.com● marciojrtorres at gmail.com

Contato