Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GopheRio__4_-_Object_Calisthenics.pdf

 GopheRio__4_-_Object_Calisthenics.pdf

Fernando Soliva

July 30, 2019
Tweet

More Decks by Fernando Soliva

Other Decks in Programming

Transcript

  1. Fernando Soliva • Software Developer 6+ anos • Go, Java

    e Python • Microservices • Serverless • Cloud Computing
  2. O que é? Conjunto de boas práticas apresentado por Jeff

    Bay no livro, The ThoughWorks Anthology 
 com objetivo de melhorar a qualidade de código.
 
 Object Calisthenics reforça princípios de SOLID e Design Patterns (E. Gamma) baseado em
 9 regras.
 
 1 - Um nível de indentação por método. 2 - Não utilize ELSE. 3 - Encapsule tipos primitivos e String em classes* 4 - First class collections. 5 - Um ponto (de referência) por linha. 6 - Não use abreviações.** 7 - Mantenha classes até 50 linhas. 8 - Classes com menos de duas variáveis de instâncias. 9 - Não utilize Getters and Setters.
 
 * No item 3, Jeff Bay sugere que somente os tipos primitivos e Strings que tenham algum
 comportamento devem ser encapsulados.
 ** A comunidade Go tem suas próprias regras de nomeação de variável e em alguns casos é aconselhado a abreviação (compreensão 
 contextual) mas lembre-se: é um princípio, não uma regra.
  3. O que é? Apesar de os princípios de Object Calisthenics

    serem pertinentes na maioria das linguagens
 é válido lembrar que o as 9 regras de OC foram criadas para resolver problemas comuns
 no mundo de desenvolvimento de software em Java. Adaptações são necessárias.
  4. As 9 regras de OC Um ponto (de referência) por

    linha O objetivo aqui é não encadear as chamadas de funções e sim usar as que estão no
 mesmo contexto.
  5. As 9 regras de OC Não use abreviações Apesar de

    na comunidade Go termos alguns princípios para nomenclatura de variáveis, 
 meu conselho é seguir o capítulo dois do livro Clean Code, Meaningful Names (R. C. Martin).
  6. As 9 regras de OC Mantenha classes menores que 50

    linhas. Apesar de não existir classes em Go, podemos adaptar para structs/interfaces. Uma forma
 de reduzir o risco de termos structs muito grandes é reduzir seu escopo de funcionalidade.
  7. Referências • Helsinki University - https://www.cs.helsinki.fi/u/luontola/tdd-2009/ext/ ObjectCalisthenics.pdf • Elton Minetto

    - https://eltonminetto.net/post/2019-06-01-object-calisthenics- golang/ • William Durand - https://williamdurand.fr/2013/06/03/object-calisthenics/ • Diego @Weng Vox - https://medium.com/web-engineering-vox/improving- code-quality-with-object-calisthenics-aa4ad67a61f1