João Deus
João Deus19/02/2024 10:15
Compartilhe

Reescrevendo código de forma mais estruturada e organizada

  • #JavaScript

Ultimamente visualizando um pouco sobre clean code, e a questão de uma manutenção de um código, além de deixa ló mais organizado, estruturado e prático, me deparei com um desafio de fazer reduções do uso do if ou uso de switch case , e também visualizando uma possível implementação de mais linhas no código futuramente, o que com um código não bem estruturado, séria necessário alterações no que já se encontrava pronto, e mais tempo para realizar a atividade. Então comecei a vê sobre ampliar o uso de objetos , utilizando o conceito de polimorfismo.

Utilizei um código recente, de um desafio a qual realizei aqui no bootcamp de lógica de programação, onde deveria realizar a seguinte problemática:

Instruções para entrega

# 3️⃣ Escrevendo as classes de um Jogo

**O Que deve ser utilizado**

- Variáveis

- Operadores

- Laços de repetição

- Estruturas de decisões

- Funções

- Classes e Objetos

## Objetivo:

Crie uma classe generica que represente um herói de uma aventura e que possua as seguintes propriedades:

- nome

- idade

- tipo (ex: guerreiro, mago, monge, ninja )

além disso, deve ter um método chamado atacar que deve atender os seguientes requisitos:

- exibir a mensagem: "o {tipo} atacou usando {ataque}")

- aonde o {tipo} deve ser concatenando o tipo que está na propriedade da classe

- e no {ataque} deve seguir uma descrição diferente conforme o tipo, seguindo a tabela abaixo:

se mago -> no ataque exibir (usou magia)

se guerreiro -> no ataque exibir (usou espada)

se monge -> no ataque exibir (usou artes marciais)

se ninja -> no ataque exibir (usou shuriken)

## Saída

Ao final deve se exibir uma mensagem:

- "o {tipo} atacou usando {ataque}"

 ex: mago atacou usando magia

 guerreiro atacou usando espada

 

Código anterior :

class Hero {

  constructor(name, age, type){

    this.name = name,

    this.age = age,

    this.type = type

  }

  Attack(){

    switch(this.type){

      case 'wizard':

        console.log('The wizard attacked using magic');

        break;

      case 'warrior':

        console.log('The warrior attacked using sword');

        break;

      case 'monk' :

        console.log('The monk attacked using martial arts');

        break;

      default:

        console.log('The ninja attacked using shuriken');

        break;

    }

  }

}

let heroOne = new Hero('Marcelo', 25, 'wizard');

heroOne.Attack();

Código atual:

class Hero {

constructor(name, age){

this.name = name;

this.age = age;

}

Attack(){

console.log('The hero attacked');

}

}

class Wizard extends Hero {

Attack(){

console.log('The wizard attacked using magic');

}

}

class Warrior extends Hero {

Attack(){

console.log('The warrior attacked using sword');

}

}

class Monk extends Hero {

Attack(){

console.log('The monk attacked using martial arts');

}

}

class Ninja extends Hero {

Attack(){

console.log('The ninja attacked using shuriken');

}

}

let heroOne = new Wizard('Marcelo', 25);

let heroTwo = new Ninja('João', 26 );

heroOne.Attack();

heroTwo.Attack();

Compartilhe
Comentários (2)
Ronaldo Schmidt
Ronaldo Schmidt - 19/02/2024 17:29

Muito bom. Esse é o caminho.

E lembre-se sempre que alterar seu código não deixe de fazer commit...

Bons estudos.

Regilene Silva
Regilene Silva - 19/02/2024 10:51

Muito legal você reescrever o código usando POO, onde as classes herdam características e comportamentos da classe base (HERO). Eu olho meus primeiros códigos no GitHub e da vontade refazer todos kkkkkk até os Scripts da automação em Selenium...Como eu estudo Python, até as consultas em SQL gosto de fazer usando SQLAlchemy (que usa uma abordagem POO). O código fica bonito, organizado ... reutilizável^^.