Substituindo a instrução switch por Object Literal

Object Literal é um bom substituto da instrução procedural switch. O switch apresenta alguns problemas — o design do código é bem antigo e procedural; dificulta encontrar um possível bug e podemos esquecer de colocar a instrução break;
no final de cada case
, permitindo passar por cada um sem necessidade; por último o código com switch
fica um pouco mais verboso.
Então, a ideia é utilizar objetos literais (object literals) ao invés do velho switch.
Vamos ver um exemplo de código comparando os dois e você poderá tirar suas próprias conclusões.
Abaixo temos a mesma funcionalidade implementada com switch
e com object literals
:
❌ Switch
A instrução switch é usada para executar ações diferentes de acordo com a entrada, ou seja, é uma estrutura condicional.
No código abaixo, temos um switch que irá atribuir na variável day
um número inteiro que corresponde o dia da semana da data atual que está sendo obtido através da instrução: new Date().getDay()
.
let day;
switch (new Date().getDay()) {
case 0:
day = "Sunday";
break;
case 1:
day = "Monday";
break;
case 2:
day = "Tuesday";
break;
case 3:
day = "Wednesday";
break;
case 4:
day = "Thursday";
break;
case 5:
day = "Friday";
break;
case 6:
day = "Saturday";
break;
default:
throw new Error("Hey! We have only 7 days in the week");
}
console.log(`What day of the week is today? ${day}`);
// Resultado para o dia 16/09/2020:
// What day of the week is today? Wednesday

✅ Object Literal
É uma maneira rápida e literal de criar um objeto, passando entre o par de chaves { }
a propriedade e o seu respectivo valor: let obj = { name: "Rocketseat", bootcamp: "Go Stack"}
No código abaixo, temos um objeto literal dayOfTheWeek
que possui os atributos de 0 a 6 e o seus respectivos valores em formato de String com os nomes dos dias da semana.
const dayOfTheWeek = {
0: "Sunday",
1: "Monday",
2: "Tuesday",
3: "Wednesday",
4: "Thursday",
5: "Friday",
6: "Saturday",
};
console.log(
`What day of the week is today? ${dayOfTheWeek[new Date().getDay()]}`
);
// Resultado para o dia 16/09/2020:
// What day of the week is today? Wednesday
👊 Conclusão
Mesmo escrevendo funcionalidade semelhantes, percebemos que o código com Object Literal possui menos linhas de código, tendo uma melhor legibilidade e não corremos o risco de esquecer algum break
.
Existem vários casos de uso de como substituir o switch
pelo object literals
. Vamos deixar alguns links caso queira se aprofundar no assunto, e levar seu código para um próximo nível! 🚀
🔗 Links
- switch statements and object literals
- substitua o switch e vários if and else usando object literals
- mdn switch
- mdn object literal
E aí, o que achou da nossa sugestão?
Espero que tenha curtido! 💜
O aprendizado é contínuo e sempre haverá um próximo nível! 🚀
