Desenvolva um código melhor com Object Calisthenics

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/


This content originally appeared on DEV Community and was authored by Marcelo Augusto

O famoso código Hadouken

Baixo, frente + soco = 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

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.


This content originally appeared on DEV Community and was authored by Marcelo Augusto


Print Share Comment Cite Upload Translate Updates
APA

Marcelo Augusto | Sciencx (2021-06-24T18:35:36+00:00) Desenvolva um código melhor com Object Calisthenics. Retrieved from https://www.scien.cx/2021/06/24/desenvolva-um-codigo-melhor-com-object-calisthenics/

MLA
" » Desenvolva um código melhor com Object Calisthenics." Marcelo Augusto | Sciencx - Thursday June 24, 2021, https://www.scien.cx/2021/06/24/desenvolva-um-codigo-melhor-com-object-calisthenics/
HARVARD
Marcelo Augusto | Sciencx Thursday June 24, 2021 » Desenvolva um código melhor com Object Calisthenics., viewed ,<https://www.scien.cx/2021/06/24/desenvolva-um-codigo-melhor-com-object-calisthenics/>
VANCOUVER
Marcelo Augusto | Sciencx - » Desenvolva um código melhor com Object Calisthenics. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2021/06/24/desenvolva-um-codigo-melhor-com-object-calisthenics/
CHICAGO
" » Desenvolva um código melhor com Object Calisthenics." Marcelo Augusto | Sciencx - Accessed . https://www.scien.cx/2021/06/24/desenvolva-um-codigo-melhor-com-object-calisthenics/
IEEE
" » Desenvolva um código melhor com Object Calisthenics." Marcelo Augusto | Sciencx [Online]. Available: https://www.scien.cx/2021/06/24/desenvolva-um-codigo-melhor-com-object-calisthenics/. [Accessed: ]
rf:citation
» Desenvolva um código melhor com Object Calisthenics | Marcelo Augusto | Sciencx | https://www.scien.cx/2021/06/24/desenvolva-um-codigo-melhor-com-object-calisthenics/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.