Construtores | Classes | Conceitos
- Construtores | Classes | Conceitos
O que DEVEM conter, o que NÃO devem conter e quais tipos existem
info
Exemplos em C#
🎯 Objetivo de um construtor
Um construtor existe para colocar o objeto em um estado válido. Apenas isso.
Ele não existe para:
- executar lógica de negócio
- acessar rede
- abrir conexão
- fazer I/O
- “preparar” o mundo externo
✅ O que PODE (e deve) ter em um construtor
1️⃣ Atribuição de dependências
Uso clássico com DI.
public class OrderService
{
private readonly IRepository _repo;
public OrderService(IRepository repo)
{
_repo = repo ?? throw new ArgumentNullException(nameof(repo));
}
}
✔️ Correto ✔️ Previsível ✔️ Testável
2️⃣ Validação de invariantes
Regras estruturais, não de negócio.
public class Email
{
public string Value { get; }
public Email(string value)
{
ArgumentNullException.ThrowIfNullOrWhiteSpace(value);
if (!value.Contains("@"))
throw new ArgumentException("Email inválido");
Value = value;
}
}
✔️ Garante estado válido ✔️ Falha cedo (fail fast)
3️⃣ Inicialização de estado simples
Sem efeitos colaterais.
public class Cache
{
private readonly Dictionary<string, string> _data = new();
public Cache() { }
}
✔️ Seguro ✔️ Determinístico