Desenvolva um código melhor com Object Calisthenics
Marcelo Augusto
Posted on June 24, 2021
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.
Posted on June 24, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
November 29, 2024