Saltar al contenido principal

Responsabilidade Única e Tamanho de Classes

Estabelecemos limites práticos para responsabilidade e tamanho de classes visando legibilidade, testabilidade e manutenção, especialmente relevantes na migração de legados para uma arquitetura DDD.

Regra

  • Classes devem ter uma única responsabilidade.
  • Exceção: repositórios e services curtos usados no mesmo contexto (mesma tela/endpoint).
  • Tamanho recomendado: classes com ~200 linhas no máximo.

Justificativa

  • Facilita testes unitários focados.
  • Melhora a legibilidade e manutenção.
  • Reduz acoplamento indevido e preserva a integridade das etapas do processo.

Exemplo

// Ruim: um service que faz de tudo
public sealed class GodService
{
public Task ValidateAsync() => Task.CompletedTask;
public Task CalculateAsync() => Task.CompletedTask;
public Task PersistAsync() => Task.CompletedTask;
}

// Bom: responsabilidades separadas
public interface IOrderValidator { Task ValidateAsync(Order order); }
public interface IOrderPricer { Task<decimal> CalculateTotalAsync(Order order); }
public interface IOrderPersister { Task SaveAsync(Order order, CancellationToken ct); }