A Arte do Clean Code: aprenda a escrever códigos de alta qualidade
- #Arquitetura de Sistemas
Quer conhecer as melhores práticas de código limpo e tornar-se um programador de alta qualidade? Então você está no lugar certo.
“Código limpo é simples e direto. Código limpo é lido como uma prosa bem escrita”. - Grady Booch, criador da UML
Se você já vivenciou o desenvolvimento de um software, saberá identificar a diferença de um código bem elaborado para um código ruim. O código ruim é como uma rua não pavimentada, consumida pela lama, poeira e pedras que dificultam a passagem e desgastam os veículos. De forma análoga, o código limpo é a rua pavimentada que permite a passagem de pessoas e tráfego seguro de veículos.
Programar é uma atividade cotidiana na vida dos desenvolvedores de software. Porém um código confuso que não apresenta claramente a sua função pode futuramente ocasionar erros, manutenção constante e mal funcionamento. Logo, o Clean Code é uma prática que surgiu com o intuito de combater esse impedimento e proporcionar organização, eficiência e clareza.
O que será abordado neste artigo?
- Introdução
- O que é “Clean Code”?
- Princípios de um código limpo
- Legibilidade: nomes são tudo no software
- Eficiência
- Simplicidade
- Reusabilidade
- Manter estruturas de diretórios e código-fonte organizados
- Como utilizar clean code na prática?
- Conclusão
- Referências
O que é “Clean Code” (Código Limpo)?
O termo “Clean Code” surgiu pela primeira vez no livro “Clean Code: habilidades práticas do Agile Software” em 2008 pelo autor Robert Cecil Martin, conhecido como “Uncle Bob”.
Clean Code é uma filosofia que descreve técnicas e convenções simples que tornam um código livre de complexidades e redundâncias, tornando-o, de fácil compreensão. Clean Code garante a manutenção simples, promove produtividade e redução de erros. Pois, quando um código é simples para manter, a base de código pode ser atualizada, o que garante a qualidade de software a longo prazo.
Princípios de um código limpo
A ideia fundamental para programar um código bem desenvolvido é quando a lógica atende o propósito do software, a manutenção é simples de ser implementada, o código é evidentemente organizado, todas estas são evidências de um código limpo e implementado corretamente.
No livro “Clean Code” é possível encontrar características fundamentais que um código limpo deve atender para desenvolver softwares de alta qualidade:
Legibilidade: nomes são tudo no software
A definição de nomes para variáveis, métodos, classes e objetos devem revelar prontamente a intenção principal e apresentar objetividade. Dessa forma, evita-se erros, má compreensão e facilita a manutenção do software. Seguem as melhores convenções para definição de nomes:
// Ao invés de
temperaturaemcelsius = 32
sistemadetemperatura = false
// Prefira:
temp_celsius = 32
sistema_temp = false
Eficiência
O código limpo deve ser eficiente, ou seja, o software deve executar todas as funcionalidades de forma rápida, produtiva e sem defeitos. Os programadores devem garantir que a aplicação fará o que lhe é proposto.
A complexidade algorítmica também influencia nestes aspectos, portanto verifique se o problema é solucionado na menor quantidade de tempo possível e ocupe menor uso de memória. Pergunte-se: “quanto tempo leva para processar este algoritmo?”.
Simplicidade
Não existe nada pior que um código repleto de comentários desnecessários, redundâncias e conceitos mal explicativos sobre o bloco de código comentado. Simplificar o código, incluir apenas o necessário ou abstrair uma informação complexa permite que o desenvolvedor foque apenas no que é mais importante. Seguem alguns parâmetros que podem ser seguidos:
- Em cada linha de código, está claro o que cada declaração faz?
- O nome da variável, classe, objeto ou método está óbvio?
- Os comentários do código explicam o que é importante ou possui explicações desnecessárias?
- Os comentários estão desatualizados? Elimine-os ou substitua por um comentário novo.
Exemplo: quantidade de Ifs no código-fonte:
function calculate (number, operation){
if(operation == 'multiply for two'){
console.log(`result: ${number * 2}`)
}else if(operation == 'divide by two'){
console.log(`result: ${number / 2}`)
}else if(operation == 'add two'){
console.log(`result: ${number + 2}`)
}else if(operation == 'subtract two'){
console.log(`result: ${number - 2}`)
}
}
calculate(5, 'multiply for two')
//Resultado:
//result: 10
Solução Simples
const account = {
'multiply for two': number => console.log(`result: ${number * 2}`),
'divide by two': number => console.log(`result: ${number / 2}`),
'add two': number => console.log(`result: ${number + 2}`),
'subtract two': number => console.log(`result: ${number - 2}`)
}
function calculate(number, operation){
return account[operation](number)
}
calculate(5, 'divide by two')
//Resultado:
//result: 2.5
Reusabilidade
Um dos conceitos fundamentais na engenharia de software, refere-se a capacidade de uso do código por múltiplas vezes sem a necessidade de modificação ou refinação constantes. A importância do reuso consiste na qualidade do código e minimizar a possibilidade de erros e bugs. Além de tornar o desenvolvimento efetivo e manter a base de código atualizada e aprimorada ao longo do tempo.
Manter estrutura de diretórios e código fonte organizados
Projetos bem-organizados auxiliam desenvolvedores a encontrar arquivos e modificá-los com facilidade e aprimora a escalabilidade dos projetos desenvolvidos.
Do contrário, arquivos espalhados por diversas pastas não estruturadas e nomes desafiadores de entender levam a confusão e erros. Portanto, segue um exemplo de uma boa estrutura de pastas e organização do código fonte.
Fonte: Alura.
Como implementar clean code na prática?
Após familiarizar-se com as melhores práticas de desenvolvimento com clean code. Vale aplicar estes conceitos na prática. Logo, seguem algumas dicas para aplicar clean code no seu desenvolvimento:
- Utilize nomes explícitos a sua funcionalidade: a definição de bons nomes para classes, variáveis, métodos e objetos é fundamental para legibilidade e compreensão imediata do código.
// Variável que expressa claramente sua funcionalidade:
temp_celsius = 32;
tempo_em_dias = 365;
// Variáveis que não são explícitas:
variavelTemp = 32;
dias_ano = 365;
- Torne seu código reutilizável: esta prática permite que seus códigos possam ser repetidos em ambientes diferentes sem a necessidade de reescrevê-los.
- Use a formatação e indentação corretos: use o recuo e indentação apropriados que destaquem a estrutura lógica dos blocos de código.
// Sem uso de indentação e formatação:
const minhaFunc=(numero1,numero2)=>{
const resultado=numero1+numero2;
return resultado;
}
// Uso de formatação e indentação:
const minhaFunc = (numero1, numero2) => {
const resultado = number1 + numero2
return resultado
}
- Evite comentários desnecessários: atualize-os conforme a evolução do código e foque no que é importante.
- Seja consistente: mantenha padronizado o código fonte, se utilizar um estilo de variável como camelCase ou outros, implemente para as demais.
CONCLUSÃO
Para concluir, aprendemos que a aplicas boas práticas de código limpo podem efetivamente tornar o desenvolvimento de software de alta qualidade. De modo que o software promova experiência mais que satisfatória ao usuário final.
Um código limpo é, portanto, uma aplicação, organizada, eficiente e objetiva que seguem boas práticas e demonstram solução para alto volume de manutenções e bugs.
Gostou das dicas de como implementar clean code na prática? Deixe seu comentário e participe da comunidade que escreve códigos de alta qualidade!
REFERÊNCIAS
LIMA, Victor. As 4 regras do código limpo. [S. l.], 9 out. 2018. Disponível em:
<https://blog.schoolofnet.com/as-4-regras-do-codigo-limpo/>. Acesso em: 26 out.2023.
MARTIN, Robert C. Código Limpo: Habilidades Práticas do Agile Software. [S. l.]: Alta
Books, 2009.
MARTIN, Robert C.; MARTIN, Micah. Princípios, Padrões e Práticas Ágeis em C#. São Paulo: Bookman, 2011. PDF.
Qualidade de Software - Engenharia de Software. Devmedia, 2010. Disponível em:
<https://www.devmedia.com.br/qualidade-de-software-engenharia-de-software-29/18209> Acesso em: 26 out. 2023.
ROBERTO, João. Clean Code: O que é? Por que usar? [S. l.], 07 ago. 2018. Disponível em: <https://medium.com/joaorobertopb/1-clean-code-o-que-%C3%A9-porque-usar-1e4f9f4454c6>. Acesso em: 26 out. 2023.