Single Responsibility: o princípio que o mercado distorceu
Aprofundamento CEVIU
Aprofundamento
O SRP não é sobre quantidade de tarefas, mas sobre quem exige a mudança. Robert C. Martin esclareceu em 2014 que um módulo deve responder a um único 'ator', um grupo de stakeholders com interesses alinhados, como contadores ou administradores de banco de dados. Misturar responsabilidades por motivos distintos (ex: regra de negócio + log + serialização na mesma classe) gera acoplamento, testes frágeis e manutenção cara. Em 2026, equipes estão deixando a interpretação subjetiva para trás: métricas como LCOM4 (ideal = 1) e CBO (quanto menor, melhor) permitem medir coesão e acoplamento objetivamente, transformando o SRP de princípio filosófico em critério técnico mensurável no CI/CD.
Essa medição já está sendo aplicada em arquiteturas modernas: em microsserviços, o 'monolito distribuído' surge quando se divide por camadas técnicas (ex: serviço de autenticação + serviço de notificação), violando o SRP; o certo é agrupar por domínio e ator, como 'serviço de faturamento', responsável por todas as mudanças exigidas pelo time financeiro. O mesmo vale para funções serverless e até documentação técnica: uma página de API deve ter uma única responsabilidade, descrever o contrato , , não misturar exemplo de uso, histórico de versões e política de rate limiting.
Por que isso importa
Ignorar o SRP não só prejudica a qualidade do código, mas amplifica riscos operacionais. Em Salesforce, por exemplo, 'personalização excessiva' e 'propriedade pouco clara entre equipes' (notícia CEVIU de 28/05) são sintomas de violações estruturais do SRP: módulos carregam lógica de múltiplos atores, então qualquer mudança no fluxo fiscal impacta integrações com CRM sem relação direta. No orçamento de IA, consolidar todos os gastos sob uma única rubrica de 'tokens consumidos' (notícia de 05/06) replica o erro, trata-se de uma 'classe Deus financeira', incapaz de priorizar investimentos por valor funcional real. O SRP, aplicado além do código, é uma ferramenta de governança: ele exige que cada unidade, técnica, organizacional ou orçamentária, tenha um motivo único para existir e evoluir.
Linha do tempo
Robert C. Martin introduz o SRP no livro 'Desenvolvimento de Software Ágil, Princípios, Padrões e Práticas'
Martin esclarece o SRP em postagem de blog: 'Reúna as coisas que mudam pelos mesmos motivos'
CEVIU News publica análise corrigindo distorções comuns sobre o SRP e conectando-o a práticas arquitetônicas e orçamentárias
Perguntas frequentes
O SRP se aplica apenas a classes em linguagens orientadas a objetos?
Não. Ele se aplica a qualquer unidade de encapsulamento: funções em JavaScript ou Python, módulos em Go, serviços em arquitetura de microsserviços, pipelines de CI/CD e até páginas de documentação. A regra é a mesma: uma única razão para mudar, definida por um ator específico.
Como identificar se uma classe viola o SRP na prática?
Verifique se ela tem métodos que respondem a requisitos de diferentes stakeholders, por exemplo, um método que atualiza dados bancários (interesse do time financeiro) e outro que envia notificações por email (interesse do time de marketing). Se sim, há pelo menos dois atores. Outro sinal: alterar um comportamento quebra outro, ou testes precisam de mocks de múltiplas camadas externas.
Existe alguma ferramenta que me ajude a medir o SRP automaticamente?
Sim. Ferramentas de análise estática como SonarQube, CodeClimate e o plugin PMD para Java calculam métricas como LCOM4 (Coesão) e CBO (Acoplamento). Um LCOM4 > 1 indica baixa coesão; um CBO alto mostra dependência excessiva. Em 2026, times usam essas métricas como gate no CI para bloquear PRs que pioram o SRP.
Qual a diferença entre SRP e separação de preocupações (SoC)?
SoC é um conceito mais amplo de engenharia de software, voltado para isolar aspectos distintos de um sistema (ex: UI, lógica de negócios, persistência). O SRP é uma aplicação concreta de SoC no nível de módulo ou classe, com foco em 'quem' exige a mudança, não apenas 'o quê' está sendo feito.
Fontes
- truehenrique.comfonte original
- Categoria
- CEVIU Web Dev
- Publicado
- 06 de junho de 2026
- Editoria
- CEVIU Web Dev
