O famoso código Hadouken
18 horas em plena sexta-feira, você doido para jogar um game e se depara com um código desse.
A vontade é de sair gritando, mas você como uma ótimo profissional, vai refatorar o código e deixar ele brilhando o/ o/
Eis que eu te apresento o Object Calisthenics
O que é Object Calisthenics?
É um conjunto de boas práticas e regras criado pelos desenvolvedores Java, mas que servem para as demais linguagens.
Ao todo são 9 regras, vou explicar as mais simples e eficientes.
Essas regras vão ajudar na manutenção do código, nos testes e até mesmo na compreensão.
Regras
OBS: A linguagem utilizada é JavaScript, mas nada impede que você aplique os conceitos em outras linguagens.
Um nível de identação por método
function displayPyramid(numberOfLine) { for (let index = 0; index < numberOfLine; index++) { let output = ""; const limit = numberOfLine - index; for (let secondIndex = 1; secondIndex < limit; secondIndex++) { output += " "; } for (let thirdIndex = 1; thirdIndex <= 2 * index + 1; thirdIndex++) { output += "*"; } console.log(output); } }
Podemos extrair os dois laços for por duas funções separadas.
function getBlankSpace(numberOfLine, currentLineIndex) { let output = ""; const limit = numberOfLine - currentLineIndex; for (let index = 1; index < limit; index++) { output += " "; } return output; } function getFilledPyramid(currentLineIndex) { let output = ""; for (let index = 1; index <= 2 * currentLineIndex + 1; index++) { output += "*"; } return output; } function displayPyramid(numberOfLine) { for (let index = 0; index < numberOfLine; index++) { let output = ""; output += getBlankSpace(numberOfLine, index); output += getFilledPyramid(index); console.log(output); } }
Não use ELSE
function printSeat(ticketCode) { if (ticketCode.startsWith("A") || ticketCode.startsWith("B")) { printVipSeat(); } else { printBasicSeat(); } }
Faça um retorno antecipado
function printSeat(ticketCode) { if (ticketCode.startsWith("A") || ticketCode.startsWith("B")) { return printVipSeat(); } return printBasicSeat(); }
Benefícios:
- Reduz a complexidade e aumenta a legibilidade do fluxo lógico
- Reduz a duplicação de validações mais complexas, te forçando a criar métodos para determinada validação
- Te força a pensar em um código mais limpo
Não use abreviações
let temp = 1; const n = 5; for (let i = 1; i <= n; i++) { temp *= i; console.log(`${i}! = ${temp}`); }
Deixe seu código mais claro, uma mudança simples dessa evita que o seu colega perca horas tentando adivinhar o que cada variável faz
let temporary = 1; const count = 5; for (let index = 1; index <= count; index++) { temporary *= index; console.log(`${index}! = ${temporary}`); }
Benefícios:
- Revelar a intenção da variável
Referências
Clean Code — Object Calisthenics in Javascript
Desenvolva um código melhor com Object Calisthenics
Writing cleaner code with Object Calisthenics
Conclusão
Quando falamos de um código limpo o que não falta é material disponível sobre o assunto. O que passei aqui foi só a ponta do ‘iceberg’, para vermos que pequenas mudanças no processo de escrita do código já podemos obter melhorias significativas na qualidade do que é produzido. Se ainda têm interesse sobre o assunto, pesquise mais sobre Object Calisthenics.
Top comments (0)