Pergunta

Estou trabalhando no meu primeiro projeto real do ASP.NET MVC e notei que o controlador em que tenho trabalhado está ficando bastante grande. Aparentemente, isso vai contra a melhor prática de manter seus controladores finos.

Fiz um bom trabalho mantendo a lógica de negócios fora dos controladores. Eu uso uma camada separada para isso. Cada ação chama principalmente um método na camada de negócios e coordena o resultado final com base no fato de o ModelState ser válido ou não.

Dito isto, o controlador possui um grande número de métodos de ação. Intuitivamente, gostaria de dividir o controlador em sub-controladores, mas não vejo uma maneira fácil de fazer isso. Eu poderia simplesmente dividir o controlador em controladores separados, mas a hierarquia e parece um pouco sujo.

É necessário refatorar um controlador com um grande número de ações finas? Se sim, qual é a melhor maneira de fazer isso?

Foi útil?

Solução

Primeiro, quando você ouve que é bom manter o código do controlador no mínimo, isso se refere principalmente a manter cada método de ação o mais fino possível (coloque a lógica em classes de negócios, não em vistas e viewmodels.) Parece que você está fazendo isso, o que é ótimo.

Quanto a ter "muitos" métodos de ação, este é um julgamento. Na verdade, poderia ser um sinal de boa organização, que você está tendo cada foco de ação em uma coisa. Além disso, talvez você esteja usando ações especificamente para uso com renderização? E pode ser apenas a natureza da sua solução que há muitas coisas a fazer relacionadas ao tema do seu controlador.

Então, meu palpite é que você provavelmente está bem. No entanto, para garantir que, na nota, divulgue o controlador em 2 ou 3 controladores e esboçando como suas histórias funcionariam de ação para ação. E se você achar que seu fluxo de trabalho funciona com mais controladores, você deve quebrá -lo. Especialmente se você vai adicionar a essa funcionalidade mais tarde. Quanto mais cedo você quebrar, melhor.

Outras dicas

Boa pergunta.

Acredito que um controlador "fino" ainda pode precisar ser "largo" ou "alto", dependendo de como você deseja esticar a analogia. Se não houver uma maneira limpa de interromper um controlador que precisa fazer muitas coisas, não acho que isso seja um problema, desde que cada ação seja focada exclusivamente na preparação de visualizações/models de exibição e seja de tamanho limitado de código.

Outra opção estrutural que você tem é introduzir classes parciais para grupos lógicos de ações. E usando algo como o VSCommands para agrupar os arquivos.

Duvido que alguém possa criar um número mágico de ações que lhe diga quando é uma boa ideia interromper as coisas e apresentar novos controladores, isso realmente depende do seu domínio.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top