I (ora più che mai) vedere gli sviluppatori a scrivere enormi quantità di strati come ad esempio:Mantenere tutto liberamente accoppiato ed estendibile: troppi strati, ROI troppo piccolo?
implementation PresentationLayer ->
interface IMyDTO ->
implementation MyDTO ->
interface IMyService ->
implementation MyService ->
interface IMyDomainRepository ->
implementation MyDomainRepository ->
interface IMyDomainObject ->
implementation MyDomainObject ->
interface IMyIndependentStorageLayer ->
implementation MyMSSQLStorageLayer
Guardando attraverso C# blog, questo sembra la cosa migliore dopo il pane a fette. Fondamentalmente, tutto è liberamente accoppiato. Non utilizzare direttamente un oggetto dominio. Esegui tutto attraverso un livello di servizio. Accedi ai dati attraverso un repository. Tutti gli strati sono perfettamente indipendenti.
Non fraintendetemi, mi piace l'idea, ma non è il trade-off nel tempo enorme, soprattutto su un progetto più ampio? Il ROI nella manutenzione è abbastanza grande da giustificare questo?
Le spiegazioni che ho letto sono piuttosto scomode, come "in questo modo posso allegare un database diverso se necessario". Veramente? Non penso che sia un problema comune che qualcuno chieda all'improvviso di passare da MSSQL a Oracle e ora ci si siede lì e si desidera avere un milione di layer che non si conoscono l'uno dell'altro.
C'è una tendenza a esagerare con un accoppiamento lento o sto solo leggendo i blog sbagliati? Come ti senti al riguardo e hai avuto casi in cui sei stato davvero contento di aver fatto il lavoro extra all'inizio?
La maggior parte delle volte non si sa se quello che risulta essere riutilizzabile in seguito? Per quello dovresti sapere su cosa lavorerai un anno dopo? – Alex
Questo è un buon punto. Quando decidi di utilizzare una certa struttura di livello, però, inserirai un nuovo codice in punti in cui può essere riutilizzato fin dall'inizio. Un servizio può essere utilizzato da più controllori, un metodo di deposito può essere utilizzato da più servizi e così via. Quindi, anche se può essere un lavoro duro e speculativo quando si inizia, alcuni benefici saranno immediati. Per me, rendere il sistema testabile è di solito un fattore enorme in queste decisioni. Penso che se è possibile rimuovere la dipendenza da un database live e la parte di rendering della vista, il resto di solito andrà tutto bene. –