Você aprendeu MVC. Entendeu o Model, a View, o Controller. Viu como as peças se encaixam, como o fluxo faz sentido, como o código fica organizado.
E aí você foi pro trabalho, abriu o projeto... e se deparou com um arquivo de Controller que tinha 800 linhas.
Soa familiar? Então senta, que lá vem história. 🍿
Antes de tudo, o MVC funciona de verdade?
Antes de falar dos limites, preciso ser justa... o MVC não é vilão nessa história.
Ele funciona muito bem em vários contextos:
- Projetos pequenos e médios com escopo bem definido
- APIs simples onde o fluxo é direto: recebe, processa, responde
- CRUDs - telas de cadastro, listagem, edição, exclusão
- MVPs e protótipos onde velocidade importa mais que arquitetura elaborada
- Times pequenos onde todo mundo conhece o projeto inteiro
Nesses cenários, o MVC é exatamente o que precisa ser: simples, previsível e suficiente.
O problema não é o MVC em si. O problema é quando o projeto cresce e o MVC permanece o único recurso na caixa de ferramentas e isso se transforma em algo que podemos chamar de Fat Controller.
Mas o que é o Fat Controller, exatamente?
É quando o Controller deixa de ser um coordenador de fluxo que é o papel dele e vira um repositório de tudo que ninguém sabe onde colocar.
O que o Controller deveria fazer:
- Receber a requisição
- Acionar quem resolve o problema
- Devolver a resposta
E que o Controller NÃO DEVERIA fazer mas, infelizmente e com bastante frequência faz:
- Conter regras de negócio, a tripa de 'Ses'.. (se o cliente tiver mais de 3 pedidos atrasados, bloqueia")
- Chamar APIs externas diretamente, as integração com Correios, PayPal, SendGrid, etc...
- Fazer consultas complexas no banco
- Enviar e-mails, disparar notificações, gravar logs
- Validar dados de negócio que não são responsabilidade da camada de entrada
Se o seu Controller faz alguma dessas coisas... ele está engordando. E vai continuar engordando a cada nova funcionalidade.
Isso acontece naturalmente quando o projeto cresce sem uma estratégia clara de onde cada responsabilidade deve morar.
Se você se identificou com mais de dois desses exemplos acima... não é culpa sua, não é culpa do MVC.
É só o sinal de que chegou a hora de conhecer ferramentas melhores pra esse tamanho de problema.
E os próximos posts irão lhe ajudar diretamente com isso :D