70% do tempo do desenvolvedor é lendo código. Veja como reduzir com Clean Code
Introdução
Olá, devs! Sabiam que cerca de 70% do nosso tempo é gasto lendo e entendendo código, enquanto apenas 30% é realmente codando?
De acordo com um estudo realizado por Bin Lin e Gregorio Robles (https://cs.paperswithcode.com/paper/investigating-the-impact-of-vocabulary), os desenvolvedores passam a maior parte do tempo compreendendo o código fonte durante o desenvolvimento de software.
O estudo destaca que a facilidade de compreensão do código proporciona vários benefícios, como facilitar revisões de código e acelerar o processo de integração de novos desenvolvedores no projeto. Além disso, o renomado autor de Clean Code, Uncle Bob, afirma que em sistemas legados essa proporção pode ser ainda maior, chegando a 10:1. Técnicas de Clean Code são essenciais para melhorar nossa produtividade e eficiência.
Vamos explorar como isso pode fazer a diferença.
Técnica 1: Nomes Significativos
Nomes significativos são fundamentais para a clareza do código.
Utilizar nomes claros e descritivos para variáveis, funções e classes ajuda a entender rapidamente o propósito e a funcionalidade de cada elemento.
Evite abreviações e prefira termos que expressem claramente a intenção do código.
// Bad example
public void Calc(int d)
{
var r = d * 1.19;
Console.WriteLine(r);
}
// Good example
public void CalculateTotalPrice(int basePrice)
{
const decimal taxRate = 0.19m;
decimal totalPrice = basePrice * (1 + taxRate);
Console.WriteLine(totalPrice);
}
Técnica 2: Métodos Pequenos
Manter métodos curtos e específicos é uma prática essencial de Clean Code. Essa abordagem também é fundamental na Clean Architecture para garantir que cada componente tenha uma responsabilidade única.
Métodos pequenos são mais fáceis de ler, entender e testar. Eles devem fazer apenas uma coisa e fazer bem.
Se um método está fazendo mais de uma tarefa, considere dividi-lo em métodos menores.
Essa abordagem não só melhora a legibilidade, mas também facilita a manutenção e a reutilização do código.
Técnica 3: Formatação Consistente
A formatação consistente do código ajuda a manter a organização e a legibilidade.
Siga um padrão de formatação definido e utilize ferramentas de linting para garantir a conformidade. Indentação, espaçamento e quebra de linhas são aspectos importantes a serem considerados.
Além disso, técnicas como o fail fast e evitar aninhar if-else ajudam a deixar o código mais claro e compreensível. Veja abaixo a diferença de legibilidade entre dois métodos somente reposicionando o retorno e evitando aninhamento de ifs.
// Bad example
public void ProcessUser(User user)
{
if (user is not null)
{
if (user.HasSubscription)
{
if (user.Age >= 18)
{
ShowFullVersion();
}
else
{
ShowChildVersion();
}
}
else
{
throw new Exception("User needs a subscription");
}
}
else
{
throw new Exception("No user found");
}
}
// Good example
public void ProcessUser(User user)
{
if (user is null)
throw new Exception("No user found");
if (!user.HasSubscription)
throw new Exception("User needs a subscription");
if (user.Age >= 18)
{
ShowFullVersion();
return;
}
ShowChildVersion();
}
Técnica 4: Princípio DRY (Don't Repeat Yourself)
O princípio DRY sugere que você não deve duplicar código desnecessariamente. Reutilize funções e métodos sempre que possível.
Isso não só reduz a quantidade de código, mas também facilita a manutenção e a atualização.
// Bad example
public decimal CalculateCustomerDiscount(decimal amount, decimal discount)
{
return amount - (amount * (discount / 100));
}
public decimal CalculateProductDiscount(decimal amount, decimal discount)
{
return amount - (amount * (discount / 100));
}
// Good example
public decimal CalculateDiscount(decimal amount, decimal discount)
{
return amount - (amount * (discount / 100));
}
public decimal CalculateCustomerDiscount(decimal amount, decimal discount)
{
return CalculateDiscount(amount, discount);
}
public decimal CalculateProductDiscount(decimal amount, decimal discount)
{
return CalculateDiscount(amount, discount);
}
Técnica 5: Refatoração Contínua
Refatorar o código regularmente é uma prática importante para manter o código limpo e eficiente.
Revise e melhore o código continuamente, corrigindo problemas e simplificando a estrutura conforme necessário.
A refatoração ajuda a evitar a degradação do código ao longo do tempo, garantindo que ele permaneça compreensível e fácil de modificar. Incorporar a refatoração como uma atividade contínua no seu fluxo de trabalho pode prevenir a acumulação de “dívida técnica”.
Conclusão
Aplicar essas técnicas de Clean Code pode reduzir significativamente o tempo gasto lendo e entendendo código.
Adotar essas práticas no seu dia a dia tornará o código mais legível, fácil de manter e melhorará sua produtividade.
Invista tempo em escrever código limpo e colha os benefícios a longo prazo.
Até!