È meglio avere azioni Crea e Modifica separate o combinare Crea e Modifica in una sola?


15

Stiamo utilizzando ASP.NET MVC 2 con un controller / Visualizza livello di presentazione e modello costituito da un livello di logica aziendale, un livello di accesso ai dati [Stored procedure e classi / metodi per parlare con le procedure memorizzate].

Nel livello aziendale e soprattutto per la maggior parte degli scopi, Modifica sembra essere in grado di rappresentare sia la creazione di un oggetto che la modifica di un oggetto. Ciò coincide bene con il nostro modello di progettazione del repository che definisce un metodo "Salva". Possiamo semplicemente verificare nella procedura memorizzata se l'ID è 0 e quindi creare un nuovo oggetto se è 0 altrimenti possiamo semplicemente aggiornare l'oggetto esistente, poiché l'id della categoria dovrebbe corrispondere a uno.

Il punto principale di discussione è se ha più senso dividere Modifica che include la Creazione in parti separate di Crea e Modifica oltre il livello DAL.

Un esempio evidente può essere mostrato come route:

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

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

vs.

Crea - http: // someurl / somearea / create

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

Ci sono standard stabiliti o migliori pratiche in merito?

So che questo è un piccolo dettaglio, ma penso che sia logisticamente importante.


4
Personalmente ritengo che le azioni separate Crea e Modifica siano un'implementazione molto più pulita (e forse più facile da mantenere).
Adam Lear

1
Un metodo nel DAL, due per l'API se ha senso.
CaffGeek,

Bene dal mio punto di vista la creazione e la modifica separate arrivano naturalmente a mvc e seguire questo approccio offre molti vantaggi nell'utilizzare il mvc al massimo e questo dovrebbe essere l'obiettivo di tutti.
maz3tt,

Risposte:


5

Direi sicuramente che vale la pena separare Crea / Modifica, se non per obbedire al principio della singola responsabilità .

Si potrebbe affermare che esiste una SEO migliore anche nell'azione corretta nell'URL.

Non separare i due renderebbe anche il codice più difficile per il test unitario.

Un nuovo programmatore che legge il codice probabilmente non troverà il codice molto intuitivo nel creare oggetti in un metodo di "modifica", ma non ha senso semanticamente. Posso tuttavia simpatizzare con il metodo Save () nel DAL.

Pensandoci, non riesco davvero a vedere i vantaggi di mettere tutto in un metodo Edit.


4

Di solito preferisco creare un Savemetodo nel DAL, ma in realtà implementare il Create/ Edit/ Deleteseparatamente.

Ad esempio, il mio Savemetodo controlla lo stato dell'oggetto e chiama il metodo Crea / Modifica / Elimina in base a ciò che è necessario

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

Questo mi permette di chiamare un solo metodo generico per salvare qualsiasi oggetto, ma mantiene comunque separata l'implementazione di ciascuno (Crea, Modifica, Elimina).


Come hai potuto dire che è una cancellazione?
NoChance,

Di solito i miei oggetti hanno una Stateproprietà. Ad esempio, facendo clic sul Deletepulsante, l'oggetto viene contrassegnato come Eliminato, quindi chiamaSaveChanges()
Rachel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.