Dependendo do tamanho da sua equipe e sua diversidade linguistica (digo aqui, cada programador tem um jeito diferente de ler/escrever código, e a maioria nao sabe nem padrões de projeto), eu sempre opto pelo mais simples, então eu faria assim:
function getOrderStatusMessage(orderStatus) {
if (orderStatus === "pending") return "Seu pedido está em análise";
if (orderStatus === "processing") return "Seu pedido está sendo preparado.";
if (orderStatus === "shipped") return "Seu pedido foi enviado.";
if (orderStatus === "delivered") return "Seu pedido foi entregue!";
if (orderStatus === "canceled") return "Seu pedido foi cancelado.";
return "Status desconhecido";
}
Agora, geralmente quando existe um campo "status" ou um campo "tipo", geralmente há a necessidade de verificar através de if algum tipo específico de status. Nesse caso, eu já crio um enum de objetos. É 0,000001 mais lento, mas o que importa é a facilidade de leitura do programador.
const OrderStatus = {
PENDING: "pending",
PROCESSING: "processing",
SHIPPED: "shipped",
DELIVERED: "delivered",
CANCELED: "canceled",
};
const OrderStatusDescriptions = {
[OrderStatus.PENDING]: "Seu pedido está em análise",
[OrderStatus.PROCESSING]: "Seu pedido está sendo preparado.",
[OrderStatus.SHIPPED]: "Seu pedido foi enviado.",
[OrderStatus.DELIVERED]: "Seu pedido foi entregue!",
[OrderStatus.CANCELED]: "Seu pedido foi cancelado.",
};
function getOrderStatusMessage(orderStatus) {
return OrderStatusDescriptions[orderStatus] || "Status desconhecido";
}
// Exemplo de uso com IF:
const orderStatus = OrderStatus.SHIPPED;
if (orderStatus === OrderStatus.SHIPPED) {
console.log("O pedido já foi enviado!");
} else if (orderStatus === OrderStatus.DELIVERED) {
console.log("O pedido já foi entregue!");
} else {
console.log(getOrderStatusMessage(orderStatus));
}
// Saída esperada: "O pedido já foi enviado!"
Nesse segundo código, a unica diferença é que o const
está fora da funcão, e pode ser reutilizado na app inteira caso necessário. Inclusive eu colocaria em um arquivo OrderStatusEnum.js
e usaria export.