Quando o MVC não é suficiente

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:

  1. Receber a requisição
  2. Acionar quem resolve o problema
  3. 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

Postar um comentário

Postagem Anterior Próxima Postagem