professor (a)
CARLOS FUTINO
disciplina
DESIGN E ARQUITETURA DE
SOFTWARE
CLEAN CODE
Livro Clean Code por Robert
Martin (Uncle Bob)
Descreve um conjunto de
princípios
Para criação de código fácil de
ler, entender e modificar
O QUE É CLEAN CODE
Bjarne Stroustrup Dave Thomas
• Elegante e eficiente, faz uma • Pode ser lido, deve ser literato
coisa bem
Grady Booch Michael Feathers
• Simples e direto como prosa • Parece que foi escrito por
bem escrita alguém que se importa
Ron Jeffries Ward Cunningham
• Duplicação reduzida, alta • Toda rotina que se lê é
expressividade e abstrações exatamente o que se espera
simples
CLEAN CODE RESUMIDO
Regra do escoteiro
Sempre deixe o acampamento melhor do que você o
encontrou
Aplicado a código
A cada mudança, o código fica melhor
MEDINDO QUALIDADE DO CÓDIGO
ELEMENTOS DO CLEAN CODE
Nomes Significativos
Funções
Comentários
Formatação
Objetos e Estruturas de Dados
Tratamento de Erros
Fronteiras
ELEMENTOS DO CLEAN CODE
Testes Unitários
Classes
Sistemas
Emergência
Concorrência
Code Smells
NOMES SIGNIFICATIVOS
Use nomes que revelem a intenção
Evite desinformação
Faça distinções significativas
Use nomes pronunciáveis
Use nomes buscáveis
Evite codificações
Notação Húngara
NOMES SIGNIFICATIVOS
Evite Mapeamento Mental
Nomes de Classes e métodos
Não seja engraçadinho
Uma palavra por conceito
Use Nomes do Domínio de Solução
Use Nomes do Domínio do Problema
Acrescente Contexto Significativo
FUNÇÕES
Pequenas
Fazer uma coisa
Um nível de Abstração por Função
Código lido de cima para baixo
Comandos Switch
Nomes Descritivos
FUNÇÕES
Argumentos de funções
Sem efeitos Colaterais
Separação comando-consulta
Prefira exceções a códigos de erro
Não se Repita (DRY)
Programação Estruturada
COMENTÁRIOS
Comentários não compensam código ruim
Explique-se em código
COMENTÁRIOS
• Comentários legais (no sentido • Resmungos
Bons comentários
Maus
Comentários
jurídico da palavra) • Comentários redundantes
• Comentários informativos • Comentários enganosos
• Explicação de Intenção • Comentários obrigatórios
• Esclarecimento • Diários
• Aviso de Consequências • Não use comentários quando pode
• A fazer usar função ou variável
• Amplificação • Marcadores de Posição
• JavaDocs e similares • Fechamentos de Blocos
• Atribuições
• Código Comentado