Data de elaboração | 21/03/2025 |
Responsável pelo estudo | Taillon Miguel Gonçalves Neves Raposo |
Equipe do estudo | Tropa de Elite |
Alvo | Controller FeriasController |
Origem | Análise de robustez, segurança e manutenção da camada MVC |
Objetivo | Propor melhorias no uso da controller, considerando boas práticas de tratamento de erro, logging, desacoplamento e experiência do usuário |
O controlador FeriasController
é responsável por orquestrar diversos fluxos relacionados à solicitação de férias, remarcação, interrupção e suspensão. Por fazer a ponte entre o front-end (views) e a camada de serviços (AppService), é fundamental que o controle de exceções e a estrutura de código estejam alinhados com os princípios de manutenção, robustez e clareza.
500 Internal Server Error
.Melhoria sugerida:
try
{
// chamada ao AppService
}
catch (Exception ex)
{
_logger.LogError(ex, "Erro em FeriasController - Action XYZ, usuario: {cpf}", userService.ObterCpf());
TempData["Erro"] = "Não foi possível concluir a operação. Tente novamente mais tarde.";
return RedirectToAction("Erro", "Home");
}
ILogger<FeriasController>
Melhoria sugerida:
Adicionar no construtor:
private readonly ILogger<FeriasController> _logger;
public FeriasController(..., ILogger<FeriasController> logger)
{
...
_logger = logger;
}
ViewData
é excessivo e em várias partes do controller. Isso dificulta testes, tipagem e refatoramento.Melhoria sugerida:
ViewData
e ViewBag
por ViewModels fortemente tipados.SolicitacaoDeFeriasCadastroViewModel
com todos os campos usados na View.ViewBag.ListaDeMatriculas = new SelectList(lista.Select(x => new {...}), ...);
Melhoria sugerida:
MontarSelectListMatriculas()
ou encapsular essa lógica em um helper/factory.Melhoria sugerida:
response.Success
e response.Message
antes de redirecionar ou renderizar.Melhoria sugerida:
ObterPeriodoFeriasDisponiveis
) retornam objetos anônimos, o que dificulta testes e reaproveitamento.Melhoria sugerida:
PeriodoFeriasDisponiveisResponse
e usá-la como return Json(model)
.Filtro de Exceção Global (ExceptionFilter)
para erros não tratados na controller;FluentValidation
para validação dos ViewModels;FeriasControllerHelper
.O FeriasController
é funcional, mas carente de abstrações, segurança e boas práticas de estrutura MVC. As melhorias propostas têm impacto direto em:
A aplicação dessas boas práticas deve ser padronizada para todas as controllers do sistema.