2013-04-14 9 views
6

Robert C. Martin in uno dei suoi discorsi sull'architettura pulita critica apertamente il modo abbastanza normale di fare le cose al giorno d'oggi. Robert C. Martin - Clean Architecture and DesignCome può una struttura di directory di livello superiore rivelare lo scopo dell'applicazione?

Quello che ho capito come standard way è qualcosa di simile:

solution 
    - UI project 
     - Models 
     - Views 
     - Controllers 
     - Assets 
    - Logic project 
    - Data project 

Martin qui dice che l'applicazione dovrebbe rivelare immediatamente il suo scopo quando si guarda alla sua sommità struttura di directory di livello ... Mi chiedo, qualcuno può fornire un esempio di tale struttura di directory, ad esempio mentre si usa il pattern MVVM come meccanismo di consegna? Come si può strutturare la sua applicazione nel modo in cui Martin sta descrivendo?

risposta

2

Da quello che vedo nel tuo esempio posso solo supporre che si tratti di un'applicazione ASP.NET MVC, dobbiamo dare un'occhiata ai progetti Logic o per capire di cosa tratta questa applicazione.

La maggior parte delle volte le persone organizzano tutta la loro struttura di directory in base alla tecnologia o al framework utilizzato. Questo deriva dal modo in cui vengono creati i modelli di progetto predefiniti (non sapendo nulla di ciò che dovrebbe fare la tua applicazione, in realtà non possono fare molto di più per noi).

Ora, quello che Robert C. Martin ci dice è che la nostra struttura di directory di primo livello dovrebbe riflettere su cosa fa l'applicazione e non su come è costruita. Non sono sicuro che sia una buona idea farlo al livello della soluzione. Tuttavia, consiglio sempre di avere un progetto Domain se potessimo applicare i principi Domain Driver Design.

Se in tale dominio progetto che si vede a livello di radice le seguenti cartelle:

Clients 
Orders 
Billing 
Shipping 
Promotions 
... 

Si potrebbe indovinare è una sorta di applicazione di e-commerce. Dovresti andare ancora più in profondità nella struttura delle directory se le cartelle che avresti trovato sono come Models, DTOs o Exceptions.

Non mi piace avere troppi progetti nella mia soluzione (meno di 10 se possibile) quindi non vado a creare un progetto per oggetto dominio del mio sistema. Questo è il motivo per cui penso che il livello base dei progetti e non delle soluzioni siano nel caso in cui dovremmo focalizzare la nostra attenzione sulla definizione di ciò che l'applicazione sta facendo.

+0

Sì, questo è un tipo di risposta che speravo. Grazie, sicuramente +1. – walther

0

Non sta parlando di una struttura che offre lo scopo dell'applicazione in quanto tale. Ha detto, al livello più alto ci dovrebbero essere casi d'uso in modo da poter vedere rapidamente cosa fa e dove sono richieste le modifiche al codice. Non penso che stia parlando di nomi di cartelle. Maggiori informazioni sulla disponibilità.

+0

'Apri il livello superiore e ci sono tutti i casi d'uso lì, e poi dici 'oh ma ho bisogno di cambiare uno di questi casi d'uso, quale, aaah, questo qui, perché è chiamato'. Come devi cambiare il codice ora? Devi capire quale url attiva quel particolare controller e poi devi scavare nel controller e ... '. Capisco che parli di una buona architettura nel suo complesso, ma sottolinea anche l'importanza di una buona struttura di cartelle. Voglio solo vedere un esempio di un'applicazione strutturata in questo modo, che nasconde il suo meccanismo di consegna e ne espone lo scopo. – walther

Problemi correlati