SlideShare uma empresa Scribd logo
1 de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Cleaner Code
Por um mundo com menos xingamentos
2 de 80www.centralit.com.br | valdemar.junior@centralit.com.br
O LIVRO
Robert C. Martin (Uncle Bob)
Programador desde 1970;
Fundador e Presidente Object
Mentor Inc.
lDesigning Object-Oriented C++
Applications using the Booch
Method. 1995.
lAgile Software Development:
Principles, Patterns and Practices.
2002.
3 de 80www.centralit.com.br | valdemar.junior@centralit.com.br
4 de 80www.centralit.com.br | valdemar.junior@centralit.com.br
5 de 80www.centralit.com.br | valdemar.junior@centralit.com.br
6 de 80www.centralit.com.br | valdemar.junior@centralit.com.br
SonarQube
“É uma ferramenta opensource para análise e
gerenciamento de qualidade de código que
oferece um relatório visual e a evolução
histórica do código.”
www.sonarqube.org
7 de 80www.centralit.com.br | valdemar.junior@centralit.com.br
8 de 80www.centralit.com.br | valdemar.junior@centralit.com.br
9 de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Situação
Quem nunca pegou um código que deveria
levar horas e levou semanas para ser corrigido?
Manter o código mais limpo possível.
10de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Isso é preocupante pra nós?
Toda vez que você escreve um Bad Code, você
está fazendo parte do problema.
11de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Médico e Paciente
12de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Evolução contínua
13de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Clean Code
”Qualquer um consegue escrever código que
um computador entende. Bons programadores
escrevem código que humanos entendem.”
Martin Fowler
14de 80www.centralit.com.br | valdemar.junior@centralit.com.br
15de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Como conquistar isso?
16de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Single Responsibility Principle(SRP)
”Uma classe deve ter um, e apenas um, motivo
para ser modificada. Esse princípio também é
chamado de coesão e implica em dizer que uma
classe deve fazer uma única coisa e fazê-la
bem.”
17de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Princípio Don't Repeat Yourself (DRY)
”A duplicação (seja ela acidental ou proposital)
pode levar a pesadelos de manutenção, além
de atrapalhar a refatoração e gerar
contradições lógicas.”
18de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Nomes Significantes
•Leva tempo, mas ajuda muito mais.
•Teremos programadores mais felizes.
•Deve-se dizer o que faz, por que existe e como
usá-la.
•Se precisar de comentários, não é um nome
significante.
19de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Nomes Significantes
20de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Utilize nomes buscáveis para
números e Strings
Ex.: X = 20
para X = VALOR_HORA;
21de 80www.centralit.com.br | valdemar.junior@centralit.com.br
22de 80www.centralit.com.br | valdemar.junior@centralit.com.br
23de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Encapsule condições
Lógica booleana já é difícil o bastante entender.
Se não vier dentro de um contexto de um if ou
while.
24de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Encapsule condições
25de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Encapsule condições
26de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Encapsule condições
Evite condições negativas. Elas são um pouco
mais difíceis de entender. Quando possível,
deveria ser expressado como positiva.
27de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Utilize Enums ao invés de Constantes
28de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Nome de Classes e Métodos
Classes Pronomes. Ex.: Paciente, WikiPage,
Conta.
•Métodos Verbos: deletar, postar, curtir,
desenhar.
29de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Sobrecarga de Construtores
Utilize métodos estáticos que descrevam os
argumentos.
30de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Escolha uma palavra por Conceito
Ex.: Buscar..., recuperar..., get..., pegar...
Não use mesmo termo para coisas distintas.
31de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Métodos
•Regra 1: Deveriam ser pequenas.
•Regra 2: Deveriam ser menores do que isso.
•O quanto pequeno deveria ser? (linhas)
De duas a cinco linhas.
32de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Blocos e Identação
If, else e while deveriam ter apenas
uma linha de código, provavelmente
uma função.
33de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Blocos e Identação
Mantém pequeno e adiciona valor de
documentação, por que a função pode
ter um bom e descritivo nome.
34de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Blocos e Identação
Métodos curtos tendem a fazer uma
coisa por vez, adicionando coesão.
35de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Switches
Grandes, quebram o SRP e se um novo
tipo for adicionado irá crescer mais.
36de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Switches
Solução: Definir o switch em uma
classe abstrata e “não deixar
ninguém ver”.
Utilizar polimorfismo.
37de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Princípio de Ward
“Você sabe quando está trabalhando em
um clean code quando cada
rotina/método/classe faz o que realmente
você espera.”
38de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Argumentos de métodos
Ideal: ZERO.
Quantidade de parâmetros superior a 3
devem ser evitados e quando utilizados
devem ser justificados.
39de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Argumentos de métodos
São difíceis de entender e de testar.
40de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Métodos com UM argumento
Você faz uma pergunta sobre o
argumento.
41de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Métodos com UM argumento
42de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Métodos com UM argumento
Opera em cima desse argumento,
transformando-o em outra coisa.
InputStream fileOpen(“nome_arquivo”);
43de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Métodos com UM argumento
44de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Argumentos FLAG
São feios. Não é uma boa prática, além de
declarar que o método tem mais de uma
responsabilidade.
45de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Argumentos FLAG
46de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Métodos com DOIS argumentos
Mais difícil de entender, mas as vezes é
OK.
Ex.: new Point(0,0);
47de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Métodos com DOIS argumentos
As vezes pode levar ao erro.
Ex.: assertEquals(expected, actual);
48de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Métodos com TRÊS argumentos
Utilizar objetos/classes como
argumento.
49de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Métodos com TRÊS argumentos
50de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Métodos com TRÊS argumentos
Utilizar objetos/classes como
argumento.
Ex.: Pega exemplo do nome social
51de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Métodos
Qualquer método que faça você
verificar a declaração ou sua
implementação, seria um tempo
desperdiçado.
52de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Métodos
Funções deveriam fazer ou perguntar
algo. Mudar o estado do objeto ou
retornar alguma informação sobre ele
e não os dois.
53de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Exceptions
Prefira Exceptions à códigos de erro.
54de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Exceptions – Códigos de erro
São feios, confundem a estrutura de
código com o processo/tratamento de
erro.
55de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Exceptions – Exceções
Fornece uma ótima separação do que
o código faz, deixando fácil de
entender e de modificar.
56de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Exceptions – Boas práticas
Utilize try-catch primeiro.
Catch tem que deixar o sistema
consistente.
57de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Exceptions – Boas práticas
58de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Exceptions – Não retorne NULL
lPrefira lançar uma Exception ou retornar
um objeto especial ao invés de NULL.
59de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Exceptions – Não retorne NULL
lNão tem boas práticas para tratar NULL.
A forma racional de tratar isso é não
passar/retornar null.
60de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Exceptions
Utilize unchecked exception.
61de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Comentários
Não comente código ruim, reescrevá-os.
Comentários não ajudam um código sujo! Em
geral, servem para explicar um código ruim.
62de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Comentários
Comentários são compensações para
nossas falhas em nos expressar no código.
63de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Comentários
Se você acha que precisa escrever um
comentário, tente pensar novamente e
expresse o que você quer no código.
64de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Por que comentários são ruins?
Por que eles mentem. Não sempre e não
intencionalmente, mas com muita
frequência.
65de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Noise Comments
Get's / Set's
Construtores padrão
Gerados pela IDE
66de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Comentário Informativo
Retorno de métodos abstratos.
TODO's.
Ampliar a importância em algo, API
Públicas.
67de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Positions Markers
lEx.: // Actions //////////////////
68de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Positions Markers
69de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Comentários
Pessoas não deletam isso. Eles pensam
que existe uma razão que é muito
importante para não deletá-los
70de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Comentários
71de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Comentários
72de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Classes
lDeveriam ser pequenas. O quanto
pequenas? Não pequenas em quantidade
de linhas, mas em responsabilidades.
73de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Classes
lO nome da classe deve descrever quais
responsabilidades está preenchida. Nós
deveríamos descrever uma classe com +-
25 palavras, sem usar Se, e, ou, mas...
74de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Classes
lUma classe deve ser aberta para
extensão e fechado para modificação.
75de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Design Simples
lExecute todos os testes.
lRemova duplicações.
lExpresse a intenção do programador.
lMinimize o número de classes e métodos.
76de 80www.centralit.com.br | valdemar.junior@centralit.com.br
REGRA DOS ESCOTEIROS
Deixe a área do acampamento
mais limpa do que como você
a encontrou.
77de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Finalmentes
•Os nomes devem ser pronunciáveis.
•Evite encodings.
78de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Finalmentes
Não tenha medo de mudar código. Seremos
gratos quando você mudar (para melhor!).
Seguir essas regras e melhorar a leitura do seu
código é um valor que será pago a curto e a
longo prazo.
79de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Mensagem
Redefina o código, divida funções, mude
nomes, elimine duplicações, deixe os
métodos curtos e reordene-os.
80de 80www.centralit.com.br | valdemar.junior@centralit.com.br
Obrigado!
E-Mail
Valdemar.junior@centralit.com.br

Mais conteúdo relacionado

PDF
O Programador Pragmático
PDF
Programação Orientada a Objetos - Pós Graduação - aula 1
PDF
O programador pragmático
PPT
Seja Um Programador Pragmatico
PDF
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OO
PPTX
Clean Code - Fork In Tuba
PDF
Programação Orientada a Objetos - Pós Graduação - Aula 7 - Inversão de Controle
PPTX
TDC2016SP - Trilha DevOps .Net
O Programador Pragmático
Programação Orientada a Objetos - Pós Graduação - aula 1
O programador pragmático
Seja Um Programador Pragmatico
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OO
Clean Code - Fork In Tuba
Programação Orientada a Objetos - Pós Graduação - Aula 7 - Inversão de Controle
TDC2016SP - Trilha DevOps .Net

Destaque (9)

PPTX
Maven 3, Sonar e Hudson
PPT
Métricas de software utilizando sonar qube
PPTX
Track code quality with SonarQube
PDF
Introdução, instalação e configuração do SonarQube
PPTX
Sonarqube
 
PDF
Sonar Metrics
PPT
SonarQube Overview
PDF
Tracking and improving software quality with SonarQube
PPTX
Sonar Overview
Maven 3, Sonar e Hudson
Métricas de software utilizando sonar qube
Track code quality with SonarQube
Introdução, instalação e configuração do SonarQube
Sonarqube
 
Sonar Metrics
SonarQube Overview
Tracking and improving software quality with SonarQube
Sonar Overview
Anúncio

Semelhante a Cleaner-Code-CentralIT-2015 (20)

PPTX
SILO - Code Review
PPTX
ZeroBugsProject - Técnicas de programação efetivas
PDF
Aula 1 - Introdução a linguagem JAVA SE
PPTX
Código limpo
PDF
TDD com Código Legado - "Atualizado"
PPTX
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
PPTX
PPTX
Design Patterns (MSDN Webcast)
PDF
Code smell gsw
PPTX
Clean Code: Por um mundo com códigos melhores - SETI 2017
PDF
Administradores e suas gambiarras
PPTX
Clean Code
PDF
Boas práticas de desenvolvimento para Jupyter Notebooks
PPT
O que é código bonito?
PDF
qualidade de código: boas práticas, princípios e padrões
PDF
PHPZEIRO: Adote um framework
PPTX
Java e orientação a objetos
PPSX
TDC2018SP | Trilha Arq .Net - Performance e feature
PDF
TDD com Código Legado
PDF
Refactoring - Design no Código
SILO - Code Review
ZeroBugsProject - Técnicas de programação efetivas
Aula 1 - Introdução a linguagem JAVA SE
Código limpo
TDD com Código Legado - "Atualizado"
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Design Patterns (MSDN Webcast)
Code smell gsw
Clean Code: Por um mundo com códigos melhores - SETI 2017
Administradores e suas gambiarras
Clean Code
Boas práticas de desenvolvimento para Jupyter Notebooks
O que é código bonito?
qualidade de código: boas práticas, princípios e padrões
PHPZEIRO: Adote um framework
Java e orientação a objetos
TDC2018SP | Trilha Arq .Net - Performance e feature
TDD com Código Legado
Refactoring - Design no Código
Anúncio

Cleaner-Code-CentralIT-2015

  • 1. 1 de 80www.centralit.com.br | valdemar.junior@centralit.com.br Cleaner Code Por um mundo com menos xingamentos
  • 2. 2 de 80www.centralit.com.br | valdemar.junior@centralit.com.br O LIVRO Robert C. Martin (Uncle Bob) Programador desde 1970; Fundador e Presidente Object Mentor Inc. lDesigning Object-Oriented C++ Applications using the Booch Method. 1995. lAgile Software Development: Principles, Patterns and Practices. 2002.
  • 3. 3 de 80www.centralit.com.br | valdemar.junior@centralit.com.br
  • 4. 4 de 80www.centralit.com.br | valdemar.junior@centralit.com.br
  • 5. 5 de 80www.centralit.com.br | valdemar.junior@centralit.com.br
  • 6. 6 de 80www.centralit.com.br | valdemar.junior@centralit.com.br SonarQube “É uma ferramenta opensource para análise e gerenciamento de qualidade de código que oferece um relatório visual e a evolução histórica do código.” www.sonarqube.org
  • 7. 7 de 80www.centralit.com.br | valdemar.junior@centralit.com.br
  • 8. 8 de 80www.centralit.com.br | valdemar.junior@centralit.com.br
  • 9. 9 de 80www.centralit.com.br | valdemar.junior@centralit.com.br Situação Quem nunca pegou um código que deveria levar horas e levou semanas para ser corrigido? Manter o código mais limpo possível.
  • 10. 10de 80www.centralit.com.br | valdemar.junior@centralit.com.br Isso é preocupante pra nós? Toda vez que você escreve um Bad Code, você está fazendo parte do problema.
  • 11. 11de 80www.centralit.com.br | valdemar.junior@centralit.com.br Médico e Paciente
  • 12. 12de 80www.centralit.com.br | valdemar.junior@centralit.com.br Evolução contínua
  • 13. 13de 80www.centralit.com.br | valdemar.junior@centralit.com.br Clean Code ”Qualquer um consegue escrever código que um computador entende. Bons programadores escrevem código que humanos entendem.” Martin Fowler
  • 14. 14de 80www.centralit.com.br | valdemar.junior@centralit.com.br
  • 15. 15de 80www.centralit.com.br | valdemar.junior@centralit.com.br Como conquistar isso?
  • 16. 16de 80www.centralit.com.br | valdemar.junior@centralit.com.br Single Responsibility Principle(SRP) ”Uma classe deve ter um, e apenas um, motivo para ser modificada. Esse princípio também é chamado de coesão e implica em dizer que uma classe deve fazer uma única coisa e fazê-la bem.”
  • 17. 17de 80www.centralit.com.br | valdemar.junior@centralit.com.br Princípio Don't Repeat Yourself (DRY) ”A duplicação (seja ela acidental ou proposital) pode levar a pesadelos de manutenção, além de atrapalhar a refatoração e gerar contradições lógicas.”
  • 18. 18de 80www.centralit.com.br | valdemar.junior@centralit.com.br Nomes Significantes •Leva tempo, mas ajuda muito mais. •Teremos programadores mais felizes. •Deve-se dizer o que faz, por que existe e como usá-la. •Se precisar de comentários, não é um nome significante.
  • 19. 19de 80www.centralit.com.br | valdemar.junior@centralit.com.br Nomes Significantes
  • 20. 20de 80www.centralit.com.br | valdemar.junior@centralit.com.br Utilize nomes buscáveis para números e Strings Ex.: X = 20 para X = VALOR_HORA;
  • 21. 21de 80www.centralit.com.br | valdemar.junior@centralit.com.br
  • 22. 22de 80www.centralit.com.br | valdemar.junior@centralit.com.br
  • 23. 23de 80www.centralit.com.br | valdemar.junior@centralit.com.br Encapsule condições Lógica booleana já é difícil o bastante entender. Se não vier dentro de um contexto de um if ou while.
  • 24. 24de 80www.centralit.com.br | valdemar.junior@centralit.com.br Encapsule condições
  • 25. 25de 80www.centralit.com.br | valdemar.junior@centralit.com.br Encapsule condições
  • 26. 26de 80www.centralit.com.br | valdemar.junior@centralit.com.br Encapsule condições Evite condições negativas. Elas são um pouco mais difíceis de entender. Quando possível, deveria ser expressado como positiva.
  • 27. 27de 80www.centralit.com.br | valdemar.junior@centralit.com.br Utilize Enums ao invés de Constantes
  • 28. 28de 80www.centralit.com.br | valdemar.junior@centralit.com.br Nome de Classes e Métodos Classes Pronomes. Ex.: Paciente, WikiPage, Conta. •Métodos Verbos: deletar, postar, curtir, desenhar.
  • 29. 29de 80www.centralit.com.br | valdemar.junior@centralit.com.br Sobrecarga de Construtores Utilize métodos estáticos que descrevam os argumentos.
  • 30. 30de 80www.centralit.com.br | valdemar.junior@centralit.com.br Escolha uma palavra por Conceito Ex.: Buscar..., recuperar..., get..., pegar... Não use mesmo termo para coisas distintas.
  • 31. 31de 80www.centralit.com.br | valdemar.junior@centralit.com.br Métodos •Regra 1: Deveriam ser pequenas. •Regra 2: Deveriam ser menores do que isso. •O quanto pequeno deveria ser? (linhas) De duas a cinco linhas.
  • 32. 32de 80www.centralit.com.br | valdemar.junior@centralit.com.br Blocos e Identação If, else e while deveriam ter apenas uma linha de código, provavelmente uma função.
  • 33. 33de 80www.centralit.com.br | valdemar.junior@centralit.com.br Blocos e Identação Mantém pequeno e adiciona valor de documentação, por que a função pode ter um bom e descritivo nome.
  • 34. 34de 80www.centralit.com.br | valdemar.junior@centralit.com.br Blocos e Identação Métodos curtos tendem a fazer uma coisa por vez, adicionando coesão.
  • 35. 35de 80www.centralit.com.br | valdemar.junior@centralit.com.br Switches Grandes, quebram o SRP e se um novo tipo for adicionado irá crescer mais.
  • 36. 36de 80www.centralit.com.br | valdemar.junior@centralit.com.br Switches Solução: Definir o switch em uma classe abstrata e “não deixar ninguém ver”. Utilizar polimorfismo.
  • 37. 37de 80www.centralit.com.br | valdemar.junior@centralit.com.br Princípio de Ward “Você sabe quando está trabalhando em um clean code quando cada rotina/método/classe faz o que realmente você espera.”
  • 38. 38de 80www.centralit.com.br | valdemar.junior@centralit.com.br Argumentos de métodos Ideal: ZERO. Quantidade de parâmetros superior a 3 devem ser evitados e quando utilizados devem ser justificados.
  • 39. 39de 80www.centralit.com.br | valdemar.junior@centralit.com.br Argumentos de métodos São difíceis de entender e de testar.
  • 40. 40de 80www.centralit.com.br | valdemar.junior@centralit.com.br Métodos com UM argumento Você faz uma pergunta sobre o argumento.
  • 41. 41de 80www.centralit.com.br | valdemar.junior@centralit.com.br Métodos com UM argumento
  • 42. 42de 80www.centralit.com.br | valdemar.junior@centralit.com.br Métodos com UM argumento Opera em cima desse argumento, transformando-o em outra coisa. InputStream fileOpen(“nome_arquivo”);
  • 43. 43de 80www.centralit.com.br | valdemar.junior@centralit.com.br Métodos com UM argumento
  • 44. 44de 80www.centralit.com.br | valdemar.junior@centralit.com.br Argumentos FLAG São feios. Não é uma boa prática, além de declarar que o método tem mais de uma responsabilidade.
  • 45. 45de 80www.centralit.com.br | valdemar.junior@centralit.com.br Argumentos FLAG
  • 46. 46de 80www.centralit.com.br | valdemar.junior@centralit.com.br Métodos com DOIS argumentos Mais difícil de entender, mas as vezes é OK. Ex.: new Point(0,0);
  • 47. 47de 80www.centralit.com.br | valdemar.junior@centralit.com.br Métodos com DOIS argumentos As vezes pode levar ao erro. Ex.: assertEquals(expected, actual);
  • 48. 48de 80www.centralit.com.br | valdemar.junior@centralit.com.br Métodos com TRÊS argumentos Utilizar objetos/classes como argumento.
  • 49. 49de 80www.centralit.com.br | valdemar.junior@centralit.com.br Métodos com TRÊS argumentos
  • 50. 50de 80www.centralit.com.br | valdemar.junior@centralit.com.br Métodos com TRÊS argumentos Utilizar objetos/classes como argumento. Ex.: Pega exemplo do nome social
  • 51. 51de 80www.centralit.com.br | valdemar.junior@centralit.com.br Métodos Qualquer método que faça você verificar a declaração ou sua implementação, seria um tempo desperdiçado.
  • 52. 52de 80www.centralit.com.br | valdemar.junior@centralit.com.br Métodos Funções deveriam fazer ou perguntar algo. Mudar o estado do objeto ou retornar alguma informação sobre ele e não os dois.
  • 53. 53de 80www.centralit.com.br | valdemar.junior@centralit.com.br Exceptions Prefira Exceptions à códigos de erro.
  • 54. 54de 80www.centralit.com.br | valdemar.junior@centralit.com.br Exceptions – Códigos de erro São feios, confundem a estrutura de código com o processo/tratamento de erro.
  • 55. 55de 80www.centralit.com.br | valdemar.junior@centralit.com.br Exceptions – Exceções Fornece uma ótima separação do que o código faz, deixando fácil de entender e de modificar.
  • 56. 56de 80www.centralit.com.br | valdemar.junior@centralit.com.br Exceptions – Boas práticas Utilize try-catch primeiro. Catch tem que deixar o sistema consistente.
  • 57. 57de 80www.centralit.com.br | valdemar.junior@centralit.com.br Exceptions – Boas práticas
  • 58. 58de 80www.centralit.com.br | valdemar.junior@centralit.com.br Exceptions – Não retorne NULL lPrefira lançar uma Exception ou retornar um objeto especial ao invés de NULL.
  • 59. 59de 80www.centralit.com.br | valdemar.junior@centralit.com.br Exceptions – Não retorne NULL lNão tem boas práticas para tratar NULL. A forma racional de tratar isso é não passar/retornar null.
  • 60. 60de 80www.centralit.com.br | valdemar.junior@centralit.com.br Exceptions Utilize unchecked exception.
  • 61. 61de 80www.centralit.com.br | valdemar.junior@centralit.com.br Comentários Não comente código ruim, reescrevá-os. Comentários não ajudam um código sujo! Em geral, servem para explicar um código ruim.
  • 62. 62de 80www.centralit.com.br | valdemar.junior@centralit.com.br Comentários Comentários são compensações para nossas falhas em nos expressar no código.
  • 63. 63de 80www.centralit.com.br | valdemar.junior@centralit.com.br Comentários Se você acha que precisa escrever um comentário, tente pensar novamente e expresse o que você quer no código.
  • 64. 64de 80www.centralit.com.br | valdemar.junior@centralit.com.br Por que comentários são ruins? Por que eles mentem. Não sempre e não intencionalmente, mas com muita frequência.
  • 65. 65de 80www.centralit.com.br | valdemar.junior@centralit.com.br Noise Comments Get's / Set's Construtores padrão Gerados pela IDE
  • 66. 66de 80www.centralit.com.br | valdemar.junior@centralit.com.br Comentário Informativo Retorno de métodos abstratos. TODO's. Ampliar a importância em algo, API Públicas.
  • 67. 67de 80www.centralit.com.br | valdemar.junior@centralit.com.br Positions Markers lEx.: // Actions //////////////////
  • 68. 68de 80www.centralit.com.br | valdemar.junior@centralit.com.br Positions Markers
  • 69. 69de 80www.centralit.com.br | valdemar.junior@centralit.com.br Comentários Pessoas não deletam isso. Eles pensam que existe uma razão que é muito importante para não deletá-los
  • 70. 70de 80www.centralit.com.br | valdemar.junior@centralit.com.br Comentários
  • 71. 71de 80www.centralit.com.br | valdemar.junior@centralit.com.br Comentários
  • 72. 72de 80www.centralit.com.br | valdemar.junior@centralit.com.br Classes lDeveriam ser pequenas. O quanto pequenas? Não pequenas em quantidade de linhas, mas em responsabilidades.
  • 73. 73de 80www.centralit.com.br | valdemar.junior@centralit.com.br Classes lO nome da classe deve descrever quais responsabilidades está preenchida. Nós deveríamos descrever uma classe com +- 25 palavras, sem usar Se, e, ou, mas...
  • 74. 74de 80www.centralit.com.br | valdemar.junior@centralit.com.br Classes lUma classe deve ser aberta para extensão e fechado para modificação.
  • 75. 75de 80www.centralit.com.br | valdemar.junior@centralit.com.br Design Simples lExecute todos os testes. lRemova duplicações. lExpresse a intenção do programador. lMinimize o número de classes e métodos.
  • 76. 76de 80www.centralit.com.br | valdemar.junior@centralit.com.br REGRA DOS ESCOTEIROS Deixe a área do acampamento mais limpa do que como você a encontrou.
  • 77. 77de 80www.centralit.com.br | valdemar.junior@centralit.com.br Finalmentes •Os nomes devem ser pronunciáveis. •Evite encodings.
  • 78. 78de 80www.centralit.com.br | valdemar.junior@centralit.com.br Finalmentes Não tenha medo de mudar código. Seremos gratos quando você mudar (para melhor!). Seguir essas regras e melhorar a leitura do seu código é um valor que será pago a curto e a longo prazo.
  • 79. 79de 80www.centralit.com.br | valdemar.junior@centralit.com.br Mensagem Redefina o código, divida funções, mude nomes, elimine duplicações, deixe os métodos curtos e reordene-os.
  • 80. 80de 80www.centralit.com.br | valdemar.junior@centralit.com.br Obrigado! E-Mail Valdemar.junior@centralit.com.br