Princípios de projeto ...           ... e boas práticas de programação           em Java           Márcio Torres          ...
Patrocinadores
Patrocinadores
Patrocinadores
Agenda●    Boas práticas lidando com ...    ●        Strings    ●        Números    ●        Coleções    ●        Métodos ...
Prelúdio
Strings: concatene comStringBuilder●     Evite a concatenação de Strings, se for o     caso, use StringBuilder.    Ao invé...
CONHECER A API  VOCÊ DEVE         Cuidado para não reinventar a roda
Strings: declare Stringsliteralmente●    Não use new para declarar uma String    Ao invés disto:    String var = new Strin...
Strings: compare com ométodo equals●    Não use == para comparar Strings. O    operador compara a referência da variável. ...
Strings: compare o literalcom a variável●    Evite comparar uma variável com uma    String, tu podes receber uma    NullPo...
Números: use primitivossempre que possível●    No Java existem duas maneiras de    representar caracteres, números e bolea...
USE SEU IDE                        COM SABEDORIAAproveite os atalhos, geradores de código edemais recursos do seu IDE para...
Números: use BigDecimalpara cálculos precisos●    Evite usar double e float para operações que    necessitam de precisão. ...
USE A FORÇAExperimente programar usando a intenção, declareseu desejo e então subjugue o código a suavontade ...
Números: use Wrapperspara representar o nulo●    Mas cuidado com a NullPointerException    Ao invés disto:    double taxa;...
Coleções: parametrizesuas coleções●    Não use arrays e evite usar ArrayList ou    HashSet sem parametrizar o tipo.    Ao ...
Coleções: devolva umalista vazia ao invés de nulo●    Evite devolver nulo.●    Em um método que devolva uma coleção    pre...
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 ...
Coleções: sempre sobrescrevaequals e hashCode●    Os métodos equals e hashCode são usados    em conjuntos (Set) e outras c...
Métodos: não passe nulocomo parâmetros●    Prefira a sobrecarga a passar nulo nos    parâmetros●    Se o método tem muitos...
NÃO SE REPITAProjete tendo o princípio DRY (Dont Repeat Yourself) emmente. Cada parte de código deve ser expresso em único...
Métodos: escreva métodospequenos e legíveis●    Se o método crescer muito decomponha em    métodos menores, aplique a refa...
Estruturas: useEnumerados para opções●    Não use Strings, Números ou Boleanos para    opçõesAo invés disto:mailer.send(tr...
SEMPRE QUE UM   COMENTÁRIO VOCÊ FOR   ADICIONAR, A SI MESMOPERGUNTE: “COMO POSSO EU  ESSE CÓDIGO MELHORAR      POSSO PARA ...
Estruturas: crie novas classespara grupos de dados●    Evite grupos de dados criando novas classes●    Evite a Obsessão Pr...
SIGA O PRINCÍPIO DE                           ACESSO UNIFORMEForneça acesso às propriedades e serviços deseus objetos atra...
Bibliografia
Perguntas?
Contato●    marciojrtorres.blogspot.com●    marciojrtorres at gmail.com
Próximos SlideShares
Carregando em…5
×

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

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

×