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

8.436 visualizações

Publicada em

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)

0 comentários
4 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
8.436
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
181
Comentários
0
Gostaram
4
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

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

  1. 1. Princípios de projeto ... ... e boas práticas de programação em Java Márcio Torres Desenvolvedor de Software (e Professor)
  2. 2. Patrocinadores
  3. 3. Patrocinadores
  4. 4. Patrocinadores
  5. 5. Agenda● Boas práticas lidando com ... ● Strings ● Números ● Coleções ● Métodos ● Estruturas● e ... ● dicas e princípios, digamos, transversalmente.
  6. 6. Prelúdio
  7. 7. Strings: concatene comStringBuilder● 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(“; “);
  8. 8. CONHECER A API VOCÊ DEVE Cuidado para não reinventar a roda
  9. 9. Strings: declare Stringsliteralmente● Não use new para declarar uma String Ao invés disto: String var = new String(“Texto”); Faça isto: String var = “texto”;
  10. 10. Strings: compare com omé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);
  11. 11. Strings: compare o literalcom 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);
  12. 12. Números: use primitivossempre 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
  13. 13. USE SEU IDE COM SABEDORIAAproveite os atalhos, geradores de código edemais recursos do seu IDE para tornar-seprodutivo Mas saiba se virar sem ele
  14. 14. Números: use BigDecimalpara 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);
  15. 15. USE A FORÇAExperimente programar usando a intenção, declareseu desejo e então subjugue o código a suavontade ...
  16. 16. Números: use Wrapperspara representar o nulo● Mas cuidado com a NullPointerException Ao invés disto: double taxa; Faça isto: Double taxa;
  17. 17. Coleções: parametrizesuas 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>();
  18. 18. Coleções: devolva umalista 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;}
  19. 19. Ao desenvolver a API pública de seus módulospergunte-se a cada tipo de entrada, válida ou inválida,qual o retorno que não surpreenderia ...
  20. 20. Coleções: sempre sobrescrevaequals e hashCode● Os métodos equals e hashCode são usados em conjuntos (Set) e outras coleções baseados em hash (como o HashMap).
  21. 21. Métodos: não passe nulocomo 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) { }
  22. 22. NÃO SE REPITAProjete tendo o princípio DRY (Dont Repeat Yourself) emmente. Cada parte de código deve ser expresso em únicoponto e sem ambiguidades
  23. 23. Métodos: escreva métodospequenos e legíveis● Se o método crescer muito decomponha em métodos menores, aplique a refatoração Extrair Método
  24. 24. Estruturas: useEnumerados para opções● Não use Strings, Números ou Boleanos para opçõesAo invés disto:mailer.send(true);Faça isto:mailer.send(Prioridade.ALTA);
  25. 25. SEMPRE QUE UM COMENTÁRIO VOCÊ FOR ADICIONAR, A SI MESMOPERGUNTE: “COMO POSSO EU ESSE CÓDIGO MELHORAR POSSO PARA QUE DESNECESSÁRIO ESSE COMENTÁRIO POSSA SER”
  26. 26. Estruturas: crie novas classespara grupos de dados● Evite grupos de dados criando novas classes● Evite a Obsessão PrimitivaAo invés disto:class Rota { int distancia;}Faça isto:class Rota { Distancia distancia;}
  27. 27. SIGA O PRINCÍPIO DE ACESSO UNIFORMEForneça acesso às propriedades e serviços deseus objetos através de uma notação uniformeescondendo se eles são obtidos através dearmazenamento ou computação ....
  28. 28. Bibliografia
  29. 29. Perguntas?
  30. 30. Contato● marciojrtorres.blogspot.com● marciojrtorres at gmail.com

×