É melhor ter ações separadas para Criar e Editar ou combinar Criar e Editar em uma?


15

Estamos usando o ASP.NET MVC 2 com uma camada e modelo de controlador / exibição de apresentação que consiste em uma camada lógica de negócios, camada de acesso a dados [procedimentos armazenados e classes / métodos para conversar com os procedimentos armazenados].

Na camada de negócios e acima para a maioria dos propósitos, o Edit parece ser capaz de representar a criação de um objeto e a edição de um objeto. Isso coincide bem com nosso padrão de design de repositório que define um método "Salvar". Podemos simplesmente verificar no procedimento armazenado se o ID é 0 e, em seguida, criar um novo objeto se for 0, caso contrário, podemos apenas atualizar o objeto existente, pois o ID da categoria deve corresponder a um.

O principal ponto de discussão é se faz mais sentido dividir a Edição que inclui a Criação em partes separadas da Criação e Edição além da camada DAL.

Um exemplo óbvio pode ser mostrado como rotas:

Criar - http: // someurl / somearea / edit / 0

Editar - http: // someurl / somearea / edit / 254

vs.

Criar - http: // someurl / somearea / create

Editar - http: // someurl / somearea / edit / 254

Existem padrões estabelecidos ou melhores práticas em relação a isso?

Sei que esse é um pequeno detalhe, mas acho que é logisticamente importante.


4
Pessoalmente, acho que as ações separadas de Criar e Editar são uma implementação muito mais limpa (e possivelmente mais fácil de manter).
Adam Lear

1
Um método no DAL, dois para a API, se isso fizer sentido.
CaffGeek

Bem, do meu ponto de vista, a criação e a edição separadas vêm naturalmente para o mvc e seguir essa abordagem dá muitas vantagens de usar o mvc ao máximo e esse deve ser o objetivo de todos.
precisa saber é o seguinte

Respostas:


5

Eu diria que vale a pena separar Criar / Editar, se não for para obedecer ao princípio da responsabilidade única .

Pode-se afirmar que existe um SEO melhor em ter a ação correta no URL também.

Não separar os dois também tornaria o código mais difícil de testar na unidade.

Um novo programador que lê o código provavelmente não achará o código muito intuitivo, tendo que criar objetos em um método de "edição", mas não faz sentido semanticamente. No entanto, posso simpatizar com o método Save () no DAL.

Pensando nisso, não consigo realmente ver os benefícios de colocar tudo em um método de edição.


4

Normalmente, prefiro criar um Savemétodo no DAL, mas na verdade implemente o Create/ Edit/ Deleteseparadamente.

Por exemplo, meu Savemétodo verifica o estado do objeto e chama o método Create / Edit / Delete, dependendo do que for necessário

switch(obj.State)
{
    case ObjectState.New:
        CreateObject(obj);
        break;
    case ObjectState.Modified:
        UpdateObject(obj);
        break;
    case ObjectState.Deleted:
        DeleteObject(obj);
        break;
}

Isso me permite chamar apenas um método genérico para salvar qualquer objeto, mas ainda mantém a implementação de cada um (Criar, Editar, Excluir) separada.


Como você pode dizer que é uma exclusão?
NoChance

Geralmente meus objetos têm uma Statepropriedade. Por exemplo, ao clicar no Deletebotão marcaria o objeto como excluídos, em seguida, chamarSaveChanges()
Rachel
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.