Então, eu estava pensando hoje, onde você colocaria classes de utilitário em um aplicativo ASP.NET MVC? Por classes de utilidade, quero dizer classes que podem ser estáticas e são usadas apenas para executar uma função. Como uma classe para enviar um email que usa endereço de email, assunto e corpo como argumentos.
Eu suponho que talvez criar uma pasta e um espaço para nome separados seria bom o suficiente, mas queria obter opiniões de todos
asp.net
asp.net-mvc-4
user60812
fonte
fonte
Respostas:
Você não E seu próprio exemplo é perfeito para mostrar por que não.
Você quer enviar e-mails, certo? Então você cria em algum lugar uma classe estática
CommunicationUtilities
com uma estáticaSendEmail()
nela. Você usa esse método de alguma classe que faz várias coisas; por exemplo, redefine a senha de um usuário e envia uma nova por email. Perfeito.Agora, o que acontece se você quiser testar sua classe? Você não pode, porque toda vez que deseja testar o método que redefine a senha, ele altera o banco de dados (o que não é adequado para um teste de unidade) e, além disso, envia um e-mail (o que é ainda pior).
Você pode ter lido sobre a Inversão de controle, que tem o benefício de facilitar o teste de unidade. Os artigos sobre IoC explicarão que, em vez de fazer algo como:
Você faz:
que permite usar zombarias e tocos.
Tente aplicar a IoC ao seu
CommunicationUtilities
. Certo, você não pode. É por isso que está quebrado.fonte
A pergunta é válida, mesmo que o exemplo dado não seja. A resposta dada por Maina é perfeita, em um contexto muito específico, que não é para mim, o contexto apropriado para as referidas classes de "utilidade" .
Pessoalmente, crio uma pasta
Helpers
na qual coloco funções simples para serem chamadas de qualquer lugar, como extensões; nesse caso, sim, elas são estáticas.Agora, se houver uma maneira melhor, ficarei feliz em aprender, mas até agora:
Agora, uma extensão é apenas açúcar sintático, também poderia ser uma função clássica.
fonte
Nenhuma das respostas fornecidas anteriormente aborda a questão real. O user60812 simplesmente perguntou onde colocar uma classe de utilidade dentro de um projeto MVC. Todos se interessaram pelo exemplo singular e falaram sobre tudo, exceto a pergunta em questão.
@ user60812, dependendo do nível de abstração que você deseja, gostaria:
Aqui está um link para uma pergunta semelhante com melhores respostas.
Na minha humilde opinião
fonte
Não crie classes estáticas para utilitários. A estática é ruim na maioria dos casos. Não os chame de gerentes também. O que quer que você esteja trabalhando, deve ser colocado em um espaço de nome lógico.
Por exemplo:
O endereço de email, o assunto e o corpo são uma preocupação separada; portanto, eu teria uma estrutura de classe para isso, daí o motivo pelo qual usei
Email email
no exemplo acima.fonte