SlideShare a Scribd company logo
1 of 23
Download to read offline
Object
Calisthenics
Por: Danilo Pinotti
Object Calisthenics
- Introduzido por Jeff Bay no livro Thoughtworks Anthology
- Conjunto de boas práticas e regras de programação
- Visa melhorar do código a sua:
- Qualidade
- Manutenabilidade
- Legibilidade
- Testabilidade
- Compreensão
Object Calisthenics: 9 Regras
1. Only One Level Of Indentation Per Method
2. Don’t Use The ELSE Keyword
3. Wrap All Primitives And Strings
4. First Class Collections
5. One Dot Per Line
6. Don’t Abbreviate
7. Keep All Entities Small
8. No Classes With More Than Two Instance Variables
9. No Getters/Setters/Properties
Regras
1. Apenas UM nível de indentação por método
1. Apenas UM nível de indentação por método
1. Apenas UM nível de indentação por método
(forma 1)
1. Apenas UM nível de indentação por método
(forma 2)
2. Não utilizar ELSE
- Evitar o máximo possível a utilização do “ELSE”.
- O “ELSE”, junto com mais níveis de indentação, aumenta a
quantidade de “caminhos” de execução do código.
- Para evitar o ELSE podemos aplicar alguns conceitos e
práticas como:
- Polimorfismo
- Early Return
- Inversão de condicional
2. Não
utilizar
ELSE
2. Não
utilizar
ELSE
3. Encapsular todos os tipos primitivos como Objetos
4. Utilizar Collections específicas
5. One Dot Per Line
5. One Dot Per Line
6. Não abreviar
- Não abreviar nomes de variáveis e métodos
- Não utilizar nomes com significado implícito ou piada interna
7. Mantenha todas as entidades pequenas
- Classes com no máximo 50 linhas (ou uma quantidade pré
estipulada dentro da empresa, por exemplo, 200)
- Objetivo principal de separar bem as responsabilidades por
classes
8. Não ter mais de duas instâncias de variável
por classe
- Alta coesão e princípio da responsabilidade única
- Sugestão: Utilizar esta regra como métrica
Fonte: https://williamdurand.fr/2013/06/03/object-calisthenics/#8-no-classes-with-more-than-two-instance-variables
9. Não utilizar
Getters e Setters
- Polêmico
- Este princípio visa encapsular
regras associadas a um objeto à
ele mesmo.
9. Não utilizar
Getters e Setters
Referências
- CRUZ, R. Desenvolva um código melhor com Object Calisthenics.
Disponível em:
<https://medium.com/@rafaelcruz_48213/desenvolva-um-c%C3%B3dig
o-melhor-com-object-calisthenics-d5364767a9ba>. Acesso em: 2 maio.
2024.
- DURAND, W. Object Calisthenics. Disponível em:
<https://williamdurand.fr/2013/06/03/object-calisthenics/#8-no-classes
-with-more-than-two-instance-variables>. Acesso em: 2 maio. 2024.
Dúvidas?
Obrigado!
contato@danilopinotti.com.br
danilopinotti.com.br
github.com/danilopinotti

More Related Content

Similar to Boas práticas de programação com Object Calisthenics (7)

Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
Code Smells
Code SmellsCode Smells
Code Smells
 
Estudos Technocorp
Estudos TechnocorpEstudos Technocorp
Estudos Technocorp
 
Aula 3.ppt
Aula 3.pptAula 3.ppt
Aula 3.ppt
 
Refatoração
RefatoraçãoRefatoração
Refatoração
 
Baixo acoplamento e alta coesão no paradigma Orientado a Objetos
Baixo acoplamento e alta coesão no paradigma Orientado a ObjetosBaixo acoplamento e alta coesão no paradigma Orientado a Objetos
Baixo acoplamento e alta coesão no paradigma Orientado a Objetos
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 

More from Danilo Pinotti

More from Danilo Pinotti (15)

Design Pattern: Pending Objects com exemplos
Design Pattern: Pending Objects com exemplosDesign Pattern: Pending Objects com exemplos
Design Pattern: Pending Objects com exemplos
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Do Zero à Produção
Do Zero à ProduçãoDo Zero à Produção
Do Zero à Produção
 
Site estático + Hospedagem Gratuita.pdf
Site estático + Hospedagem Gratuita.pdfSite estático + Hospedagem Gratuita.pdf
Site estático + Hospedagem Gratuita.pdf
 
Vue 2 - Componentes [2 de 2 - 2020]
Vue 2 - Componentes [2 de 2 - 2020]Vue 2 - Componentes [2 de 2 - 2020]
Vue 2 - Componentes [2 de 2 - 2020]
 
Vue - Básico sobre Vue [1 de 2 - 2020]
Vue - Básico sobre Vue [1 de 2 - 2020]Vue - Básico sobre Vue [1 de 2 - 2020]
Vue - Básico sobre Vue [1 de 2 - 2020]
 
Code Review
Code ReviewCode Review
Code Review
 
Minicurso de Expressões Regulares (REGEX)
Minicurso de Expressões Regulares (REGEX)Minicurso de Expressões Regulares (REGEX)
Minicurso de Expressões Regulares (REGEX)
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENAC
 
Talk sobre testes automatizados. Parte 1/2
Talk sobre testes automatizados. Parte 1/2Talk sobre testes automatizados. Parte 1/2
Talk sobre testes automatizados. Parte 1/2
 
O básico sobre Vue 2. Talk Vue Básico 1/3
O básico sobre Vue 2. Talk Vue Básico 1/3O básico sobre Vue 2. Talk Vue Básico 1/3
O básico sobre Vue 2. Talk Vue Básico 1/3
 
Comunicação entre componentes com Vue 2. Talk Vue Básico 2/3
Comunicação entre componentes com Vue 2. Talk Vue Básico 2/3Comunicação entre componentes com Vue 2. Talk Vue Básico 2/3
Comunicação entre componentes com Vue 2. Talk Vue Básico 2/3
 
Alguns Helpers do Laravel 5.6
Alguns Helpers do Laravel 5.6Alguns Helpers do Laravel 5.6
Alguns Helpers do Laravel 5.6
 
Deixando aplicações Laravel mais rápidas
Deixando aplicações Laravel mais rápidasDeixando aplicações Laravel mais rápidas
Deixando aplicações Laravel mais rápidas
 

Recently uploaded

Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Dirceu Resende
 

Recently uploaded (9)

[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
 
O futuro e o impacto da tecnologia nas salas de aulas
O futuro e o impacto da tecnologia  nas salas de aulasO futuro e o impacto da tecnologia  nas salas de aulas
O futuro e o impacto da tecnologia nas salas de aulas
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo Pagliusi
 
Apostila e caderno de exercicios de WORD
Apostila e caderno de exercicios de  WORDApostila e caderno de exercicios de  WORD
Apostila e caderno de exercicios de WORD
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
 
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
 

Boas práticas de programação com Object Calisthenics

  • 2. Object Calisthenics - Introduzido por Jeff Bay no livro Thoughtworks Anthology - Conjunto de boas práticas e regras de programação - Visa melhorar do código a sua: - Qualidade - Manutenabilidade - Legibilidade - Testabilidade - Compreensão
  • 3. Object Calisthenics: 9 Regras 1. Only One Level Of Indentation Per Method 2. Don’t Use The ELSE Keyword 3. Wrap All Primitives And Strings 4. First Class Collections 5. One Dot Per Line 6. Don’t Abbreviate 7. Keep All Entities Small 8. No Classes With More Than Two Instance Variables 9. No Getters/Setters/Properties
  • 5. 1. Apenas UM nível de indentação por método
  • 6. 1. Apenas UM nível de indentação por método
  • 7. 1. Apenas UM nível de indentação por método (forma 1)
  • 8. 1. Apenas UM nível de indentação por método (forma 2)
  • 9. 2. Não utilizar ELSE - Evitar o máximo possível a utilização do “ELSE”. - O “ELSE”, junto com mais níveis de indentação, aumenta a quantidade de “caminhos” de execução do código. - Para evitar o ELSE podemos aplicar alguns conceitos e práticas como: - Polimorfismo - Early Return - Inversão de condicional
  • 12. 3. Encapsular todos os tipos primitivos como Objetos
  • 13. 4. Utilizar Collections específicas
  • 14. 5. One Dot Per Line
  • 15. 5. One Dot Per Line
  • 16. 6. Não abreviar - Não abreviar nomes de variáveis e métodos - Não utilizar nomes com significado implícito ou piada interna
  • 17. 7. Mantenha todas as entidades pequenas - Classes com no máximo 50 linhas (ou uma quantidade pré estipulada dentro da empresa, por exemplo, 200) - Objetivo principal de separar bem as responsabilidades por classes
  • 18. 8. Não ter mais de duas instâncias de variável por classe - Alta coesão e princípio da responsabilidade única - Sugestão: Utilizar esta regra como métrica Fonte: https://williamdurand.fr/2013/06/03/object-calisthenics/#8-no-classes-with-more-than-two-instance-variables
  • 19. 9. Não utilizar Getters e Setters - Polêmico - Este princípio visa encapsular regras associadas a um objeto à ele mesmo.
  • 21. Referências - CRUZ, R. Desenvolva um código melhor com Object Calisthenics. Disponível em: <https://medium.com/@rafaelcruz_48213/desenvolva-um-c%C3%B3dig o-melhor-com-object-calisthenics-d5364767a9ba>. Acesso em: 2 maio. 2024. - DURAND, W. Object Calisthenics. Disponível em: <https://williamdurand.fr/2013/06/03/object-calisthenics/#8-no-classes -with-more-than-two-instance-variables>. Acesso em: 2 maio. 2024.