Esqueça o If...Else: Use Hashtables em JavaScript
e você ainda está preso ao uso de if...else ou switch case no seu código JavaScript, talvez seja hora de repensar sua abordagem. Embora essas estruturas sejam úteis e bastante comuns, elas podem se tornar verbosas e difíceis de manter, especialmente em casos com muitas condições.
A boa notícia é que existe uma alternativa mais elegante e eficiente: as hashtables!
O que é uma Hashtable?
Na programação, uma hashtable (ou tabela de hash) é uma estrutura de dados que associa chaves a valores, permitindo buscas em tempo constante O(1). No JavaScript, utilizamos objetos literais e Maps para representar hashtables. Isso não só facilita a organização do código, mas também melhora a performance em diversas situações.
Por que usar Hashtables?
Performance Consistente: A busca por um valor é feita em tempo constante, independente do tamanho da estrutura.
Código Mais Limpo: Substituir estruturas condicionais aninhadas por mapeamentos chave-valor deixa o código mais organizado e fácil de ler.
Escalabilidade: Alterações na lógica de mapeamento são feitas de forma centralizada, sem precisar modificar vários blocos condicionais.
Como utilizar Hashtables para verificação condicional
Vamos imaginar um cenário comum: uma API de restaurante que retorna uma mensagem com base no status do pedido. A abordagem tradicional com if...else ficaria assim:
function getOrderStatusMessage(orderStatus) {
if (orderStatus === "pending") {
return "Seu pedido está em análise.";
} else if (orderStatus === "processing") {
return "Seu pedido está sendo preparado.";
} else if (orderStatus === "shipped") {
return "Seu pedido foi enviado.";
} else if (orderStatus === "delivered") {
return "Seu pedido foi entregue!";
} else if (orderStatus === "canceled") {
return "Seu pedido foi cancelado.";
} else {
return "Status desconhecido";
}
}
Embora funcione bem para poucos casos, esse código pode se tornar caótico conforme mais condições forem adicionadas. Vamos ver uma alternativa usando hashtable:
function getOrderStatusMessage(orderStatus) {
const orderStatusMessages = {
pending: "Seu pedido está em análise.",
processing: "Seu pedido está sendo preparado.",
shipped: "Seu pedido foi enviado.",
delivered: "Seu pedido foi entregue!",
canceled: "Seu pedido foi cancelado."
};
return orderStatusMessages[orderStatus] || "Status desconhecido";
}
console.log(getOrderStatusMessage("canceled")); // Output: "Seu pedido foi cancelado."
Exemplo Prático: Categorização de Produtos
Imagine uma API de e-commerce que precisa categorizar produtos com base no preço. Veja uma solução mais elegante usando hashtable:
const product = { name: "Escova de Cabelo", price: 50 };
function categorizeProduct(product) {
const categories = {
premium: { from: 101, to: Infinity },
regular: { from: 50, to: 100 },
basic: { from: 0, to: 49 }
};
const productCategory = Object.keys(categories).find((key) => {
const category = categories[key];
return product.price >= category.from && product.price <= category.to;
});
return { ...product, category: productCategory || null };
}
console.log(categorizeProduct(product)); // Output: { name: 'Escova de Cabelo', price: 50, category: 'regular' }
Conclusão
Ao optar por hashtables, você garante um código mais limpo, performático e fácil de manter. Não se trata apenas de evitar if...else ou switch case, mas de adotar uma abordagem que realmente faça sentido para o contexto da sua aplicação.
Experimente aplicar essa técnica em seus próximos projetos e perceba como o desenvolvimento se torna mais fluido e profissional. Se tiver dúvidas ou quiser compartilhar suas experiências, fique à vontade para comentar!