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

Clean Code

Clean Code

Talk given to my colleagues at Quatix.

Avatar for Gustavo Barbosa

Gustavo Barbosa

June 20, 2012
Tweet

More Decks by Gustavo Barbosa

Other Decks in Programming

Transcript

  1. SOBRE O QUE FALAREI • nomenclaturas • funções • classes

    • formatação • comentários • objetos • estrutura de dados • tratamento de exceções • boundaries • unit testing
  2. SOBRE O QUE NÃO FALAREI • dependency injection • TDD

    • refactoring • emergência • concorrência • frameworks de teste • JUnit
  3. O QUE É UM CÓDIGO LIMPO? • direto ao ponto

    • mínimas dependências • sem duplicação • fácil manutenção • padrões definidos • de fácil leitura/entendimento • coberto de testes • elegante
  4. “NÃO SOU UM EXCELENTE DESENVOLVEDOR. SOU APENAS UM DESENVOLVEDOR MEDIANO

    QUE SEGUE À RISCA AS BOAS PRÁTICAS DE UM CÓDIGO LIMPO.” (um dev muito famoso)
  5. NOMES SIGNIFICATIVOS CLASSES MÉTODOS em geral, classes devem ser representadas

    por substantivos, não verbos. bons exemplos: Cliente, Perfil, Estoque, etc. em geral, métodos devem ser representadas por verbos ou frases verbais bons exemplos: enviarPagamento, removerPagina, salvar, etc. (prefira o infinitivo)
  6. •menos é sempre mais! •extraia trechos em métodos privados •lembre-se

    dos nomes significativos ;) •vá direto ao ponto FUNÇÕES
  7. •repare a endentação (sim, é assim que escreve ;) •muitos

    níveis ~= muita responsabilidade •o método deve fazer uma única coisa, e bem! •dá para extrair? está fazendo mais de uma coisa FUNÇÕES
  8. •seu código deve ser lido como uma narrativa •temos sujeitos,

    verbos e predicados :) •narrativas são frases com uma ordem coerente •lembre-se disso ao extrair em métodos privados FUNÇÕES
  9. •muitos argumentos ~= code smell •existem algumas regras para qtd

    de argumentos •argumentos booleanos em geral não são bons •ex: FUNÇÕES
  10. •em geral, servem para explicar um código ruim •um bom

    código é auto-documentado COMENTÁRIOS •extraia para um método que faça o que diz!
  11. •por falta do que escrever •redundantes •doc em APIs não-públicas

    •dizendo algo que o próprio código deveria dizer •código comentado :/
 COMENTÁRIOS
  12. •objetos expõem comportamentos e escondem dados •estruturas de dados expõem

    seus dados e não têm comportamentos significativos OBJETOS E ESTRUTURAS DE DADOS
  13. •um método f de uma classe C só conhece: •métodos

    de C •objetos criados por f •objetos passados como argumentos para f •objetos em variáveis de instância de C OBJETOS E ESTRUTURAS DE DADOS