Este documento discute boas práticas para criar códigos limpos e de alta qualidade, focando em tópicos como nomes significativos, funções pequenas que fazem uma coisa só, comentários úteis, formatação consistente e tratamento de erros usando exceções. O objetivo é produzir códigos eficientes, de fácil manutenção e entendimento.
4. The Clean Coder
Robert C. Martin (Uncle Bob); Programador desde 1970;
Fundador e Presidente Object Mentor Inc.
Livros:
Designing Object-Oriented C++ Applications using the Booch Method. 1995.
Agile Software Development: Principles, Patterns and Practices. 2002.
Clean Code: A Handbook of Agile Software Craftsmanship.
19. Nomes significativos
int d; // tempo transcorrido em dias
int tempoTranscorridoEmDias;
int diasDesdeCriacaoDoArquivo;
int diasDesdeModificacaoDoArquivo;
int idadeDoArquivoEmDias;
21. Nomes significativos
public List<int> obter()
{
int[] x = new int[3];
List<int> lista1 = new List<int>();
for (int i = 0; i < lista; i++)
{
if (x[0] == 4)
{
lista1.Add(x[0]);
}
}
return lista1;
}
public List<int> obtemDiasMarcados()
{
int[] diaMarcado = new int[3];
List<int> diasMarcados = new List<int>();
for (int dia = 0; dia < mes; dia++)
{
if (diaMarcado[STATUS] == MARCADO)
{
diasMarcados.Add(diaMarcado[STATUS]);
}
}
return diasMarcados;
}
22. Nomes significativos
public List<int> obtemDiasMarcados()
{
int[] diaMarcado = new int[3];
List<Dia> diasMarcados = new List<Dia>();
foreach (Dia dia in mes)
{
if (dia.marcado)
{
diasMarcados.Add(dia);
}
}
return diasMarcados;
}
34. Funções
• Repare a endentação (sim, é assim que escreve)
• Muitos níveis ~= muita responsabilidade
• O método deve fazer uma única coisa, e bem!
• Está fazendo mais de uma coisa? Extraia.
36. Funções
• Seu código deve ser lido como uma
narrativa
• Temos sujeitos, verbos e predicados
• Narrativas são frases em ordem
coerente
• Lembre-se disto ao extrair em
métodos privados;
37. Funções
• Muitos argumentos = code smell
• Existem algumas regras para a
quantidade de argumentos
• Argumentos booleanos, em geral, não
são bons.
44. Comentários
• Comentários sobre licença (direitos de
uso de uma lib, por exemplo)
• Comentários informativos
• Necessidade de explicação de negócio
46. Comentários
• Por falta do que escrever
• Redundantes
• Documentação em APIs não públicas
• Dizendo algo que o próprio código
deveria dizer
• Código comentado =S
55. Objetos e estrutura de dados
Um método M de uma classe C só conhece:
• Métodos de C
• Objetos criados por M
• Objetos passados como argumentos para M
• Objetos em variáveis de instâncias de C
68. Código ruim
cheira mal...
Torna o seu trabalho
lento e desgastante
com o passar do
tempo
Pode arruinar seu
projeto, carreira,
empresa...
Fique atento.
69. Falar é fácil!
O desafio é criar um código de
qualidade.
Portanto, falar é o primeiro passo de melhoria.