Executando verificação de segurança...
Respondendo a [Não disponível] dentro da publicação 🔢 Enums Fortemente Tipados em C# - Um Guia Completo 💪
1

A implementação de Enums Fortemente Tipados não é apenas uma questão de funcionalidade básica, como criar um Dictionary. A escolha pelo padrão que apresentei no artigo tem motivos claros que vão além de uma simples estrutura chave-valor. Vamos analisar e defender os principais pontos:


1. Semântica e Intenção

Um Dictionary é uma estrutura genérica de chave-valor, enquanto um Enum Fortemente Tipado fornece semântica clara. No exemplo do artigo, você não apenas define chaves e valores, mas encapsula comportamento e identidade, promovendo o uso de objetos ricos.

  • No caso do Dictionary:

    CreditCardDiscount["Standard"]
    

    Aqui, não há segurança de tipo. Se alguém digitar uma chave incorreta (e.g., "Stndard"), haverá um erro de runtime.

  • No caso do Enum Fortemente Tipado:

    CreditCardType.Standard.Discount
    

    Aqui, tanto a chave quanto o valor são validados em tempo de compilação, o que reduz drasticamente erros e torna o código mais expressivo.


2. Manutenção e Extensibilidade

Um Dictionary funciona bem para mapeamentos simples, mas torna-se limitado quando o modelo evolui. Por exemplo, se o CreditCard passar a ter outras propriedades além do desconto, como uma descrição ou prioridade:

  • No Dictionary:
    A abordagem ficaria mais complexa e menos legível, exigindo estruturas auxiliares ou novos mapeamentos:

    var CreditCardDetails = new Dictionary<string, (double Discount, string Description)>{
        { "Standard", (0.01, "Basic card") },
        { "Premium", (0.05, "Intermediate card") },
        { "Platinum", (0.1, "Top-tier card") }
    };
    
  • No Enum Fortemente Tipado:
    Adicionar comportamentos ou propriedades ao tipo é direto:

    public class CreditCardType
    {
        public static readonly CreditCardType Standard = new("Standard", 0.01, "Basic card");
        public static readonly CreditCardType Premium = new("Premium", 0.05, "Intermediate card");
        public static readonly CreditCardType Platinum = new("Platinum", 0.1, "Top-tier card");
    
        public string Name { get; }
        public double Discount { get; }
        public string Description { get; }
    
        private CreditCardType(string name, double discount, string description)
        {
            Name = name;
            Discount = discount;
            Description = description;
        }
    }
    

    Isso mantém o código coeso e organizado.


3. Segurança de Tipo

Ao utilizar um Dictionary, você depende de strings para as chaves, o que é suscetível a erros. Com Enums Fortemente Tipados, o tipo é explícito, o que impede uso incorreto ou ambíguo:

  • Com Dictionary:

    var discount = CreditCardDiscount["Stanndard"]; // Erro de runtime
    
  • Com Enum Fortemente Tipado:

    var discount = CreditCardType.Standard.Discount; // Seguro e validado em compile-time
    

4. Carga e Desempenho

Você mencionou no seu comentário "uma carga enorme". No entanto, a estrutura apresentada no artigo cria objetos imutáveis e reutilizáveis. Não há impacto significativo de desempenho, pois o modelo usa o padrão Singleton e evita reprocessamento.

Já o Dictionary carrega overheads adicionais de hashing e buscas dinâmicas, o que pode ser evitado na abordagem proposta.


5. Legibilidade e Organização

A proposta de um Dictionary resulta em menos legibilidade quando se trata de conceitos de domínio. A abordagem apresentada no artigo organiza os dados de forma mais explícita e mantém o contexto do domínio em uma única classe.

  • Um Enum Fortemente Tipado é autocontido e reflete melhor as intenções do código.

Ambas as abordagens têm méritos, mas a escolha por Enums Fortemente Tipados vai além de mapear valores: trata-se de melhorar a expressividade, a segurança de tipo, e a extensibilidade do sistema. Em um sistema que evolui, o custo inicial de implementação é compensado por um código mais robusto, organizado e seguro.

Carregando publicação patrocinada...