Escrever código é uma tarefa difícil, não apenas pela complexidade do problema a ser resolvido, mas as vezes pela qualidade do código que já existe.
Nessa apresentação falo sobre Object Calisthenics, que é um conjunto de 9 exercícios básicos de programação orientada a objetos para manter o seu código limpo com alta coesão e baixo acoplamento.
8. “Clean code is simple and direct. Clean code
reads like well-written prose. Clean code never
obscures the designer’s intent but rather is full
of crisp abstractions and straightforward lines
of control.”
Grady Booch
clean code handbook of agile software craftsmanship
14. “A palavra calisthenics vem das antigas palavras
gregas kallos (κάλλος), que significa “belo“ e
sthenos (σθένος), que significa “força”.
Wikipedia
https://en.wikipedia.org/wiki/Calisthenics
16. Esse conceito foi criado pelo
Jeff Bay no livro
The ThoughtWorks Anthology
17. “So here’s an exercise that can help you to
internalize principles of good object-oriented
design and actually use them in real life.”
Jeff Bay
The ThoughtWorks Anthology
32. ● evita a duplicação de código DRY
● legibilidade
● reduz a complexidade ciclomática
Resumo:
Em casos complexo, padrões como State,
Null Object e Strategy podem ser úteis
38. ● evita a duplicação de código DRY
● Single Responsibility Principle (S do SOLID)
● valida o estado na criação do objeto
● encoraja composição
Resumo:
Martin Fowler apresenta este conceito como
Value Object.
51. Defina nomes que expressem o que realmente o
método faz (mesmo que possa parecer ridículo)
52. ● comunicação mais clara
● manutenabilidade
● Ubiquitous Language (Eric Evans)
Resumo:
Quando for dar nome a método/variável,
caso você pense em utilizar “e” (and), seu
método pode está fazendo mais coisas do
que deveria.
65. ● Information Expert (GRASP)
● foco no comportamento ao invés de dados
● encapsulamento
Resumo:
66. #1 somente um nível de indentação por método
#2 não use o keyword “else”
#3 encapsule os tipos primitivos e strings
#4 coleções de primeira classe
#5 um ponto por linha
#6 não abrevie seu código
#7 mantenha as classes pequenas
#8 não crie classes com mais de duas variáveis de instância
#9 não use getters and setters
Recapitulando