**Porque aplicar regras Object Calisthenics ? **
9 regras de Object calisthenics
Primeiramente, Object Calisthenics é um conjunto de regras para desenvolvedores a escrever codigos orientados a objetos com mais clareza e a terem um codigo mais legivel e de facil manutenção. Não é obrigatório usar estas regras, mas utiliza-la fara que voce treine boas praticas a programação orientada a objetos no seu dia a dia. Sem primitivos soltos; todos os numeros estao encapsulados em objetos Composicao de objetos; cada operacao é um objeto que recebe outros objetos metodos de instancias; cada classe tem seu metodo.calcular(). e cada classe representa uma operação matematica. E tambem fica facil de expandir caso queira criar um projeto para praticar e adicionar mais operacoes matematicas, como potenciacao. Para isso basta criar uma nova classe. Eu mesmo comecei a aplicar estas regras e tive como resultado uma legibilidade melhor do meu codigo em meus projetos. Mas lembrando que se voce nao tem conhecimento nenhum de POO da uma conferida nesta formação da Alura para comecar a utilizar essas regras .
class Numero {
constructor(valor) {
this.valor = valor;
}
calcular() {
return this.valor;
}
}
class Soma {
constructor(esquerda, direita) {
this.esquerda = esquerda;
this.direita = direita;
}
calcular() {
return this.esquerda.calcular() + this.direita.calcular();
}
}
class Subtracao {
constructor(esquerda, direita) {
this.esquerda = esquerda;
this.direita = direita;
}
calcular() {
return this.esquerda.calcular() - this.direita.calcular();
}
}
class Multiplicacao {
constructor(esquerda, direita) {
this.esquerda = esquerda;
this.direita = direita;
}
calcular() {
return this.esquerda.calcular() * this.direita.calcular();
}
}
class Divisao {
constructor(esquerda, direita) {
this.esquerda = esquerda;
this.direita = direita;
}
calcular() {
return this.esquerda.calcular() / this.direita.calcular();
}
}
// 10 + 5 * 2 / 3 - 7 + 15 * 3 / 5 + 20 - 4 * 2
const expressao = new Subtracao(
new Soma(
new Soma(
new Subtracao(
new Soma(
new Numero(10),
new Divisao(
new Multiplicacao(new Numero(5), new Numero(2)),
new Numero(3)
)
),
new Numero(7)
),
new Divisao(
new Multiplicacao(new Numero(15), new Numero(3)),
new Numero(5)
)
),
new Numero(20)
),
new Multiplicacao(new Numero(4), new Numero(2))
);
console.log(` O Resultado da expressão é: ${expressao.calcular()}`);
// O resultado é 27.3