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

Clean Code

Clean Code

Talk given to my colleagues at Quatix.

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