Separação de Conceitos (SoC)
Definição
A Separação de Conceitos (Separation of Concerns - SoC) é um princípio arquitetural que propõe que cada parte de um sistema deve lidar com uma única responsabilidade ou preocupação específica.
A ideia é dividir o sistema em componentes, camadas ou módulos bem definidos, de modo que cada um trate apenas de uma responsabilidade específica — como lógica de negócio, acesso a dados, apresentação, validação etc.
Por que é importante
Separar conceitos torna o sistema mais organizado, compreensível e flexível. Quando cada parte do código tem um foco claro, fica mais fácil fazer alterações, localizar bugs e reutilizar componentes.
Além disso, essa separação reduz o acoplamento entre partes do sistema e melhora a coesão dentro de cada módulo — dois fatores essenciais para manutenibilidade e escalabilidade.
Exemplo prático (Python)
Considere um código que mistura responsabilidades de lógica, persistência e interface:
def cadastrar_usuario(nome, email):
if not nome or "@" not in email:
print("Dados inválidos")
return
usuario = {"nome": nome, "email": email}
banco_de_dados.append(usuario)
print("Usuário cadastrado com sucesso")
Esse código mistura: validação de dados, lógica de criação, persistência e exibição. Aplicando separação de conceitos, podemos reestruturar assim:
def validar_dados(nome, email):
if not nome or "@" not in email:
raise ValueError("Dados inválidos")
def criar_usuario(nome, email):
return {"nome": nome, "email": email}
def salvar_usuario(usuario):
banco_de_dados.append(usuario)
def exibir_mensagem(texto):
print(texto)
# Orquestração
try:
validar_dados(nome, email)
usuario = criar_usuario(nome, email)
salvar_usuario(usuario)
exibir_mensagem("Usuário cadastrado com sucesso")
except ValueError as erro:
exibir_mensagem(str(erro))
Cada função agora tem uma única função bem definida. Isso facilita manutenção, testes isolados e futuras alterações sem interferência entre as partes.