visual-studio - valido - visualstudio editor




Cartelle o progetti in una soluzione di Visual Studio? (5)

Separare il tuo codice sorgente in più progetti ha senso solo se tu ... ... Altri sviluppatori sono coinvolti e vuoi trattare il loro lavoro come una scatola nera consumabile. (non molto consigliato) ...

Perché non è raccomandato? Ho trovato un modo molto utile per gestire un'applicazione con diversi sviluppatori che lavorano su porzioni diverse. Rende i check-in molto più semplici, principalmente eliminando virtualmente le unioni. Molto raramente, due sviluppatori devono lavorare allo stesso progetto contemporaneamente.

Quando si suddivide una soluzione in livelli logici, quando è meglio utilizzare un progetto separato semplicemente raggruppando per una cartella?


Denny ha scritto:

Personalmente ritengo che se il codice riusabile è suddiviso in progetti, è più semplice utilizzare altri posti che se si trovasse solo nelle cartelle.

Sono davvero d'accordo con questo: se puoi riutilizzarlo, dovrebbe essere in un progetto separato. Detto questo, è anche molto difficile riutilizzarlo in modo efficace :)

Qui in SO, abbiamo cercato di essere molto semplici con tre progetti:

  • Progetto MVC Web (che consente di separare i tuoi livelli in cartelle per impostazione predefinita)
  • Progetto di database per il controllo del codice sorgente del nostro DB
  • Test unitari contro modelli / controllori MVC

Non posso parlare per tutti, ma sono contento di come sia stato semplice mantenerlo - velocizza davvero le build!


Penso davvero che sia meglio suddividere il progetto, ma tutto dipende dalle dimensioni del progetto e dal numero di persone che ci lavorano.

Per i progetti più grandi, ho un progetto per

  • accesso ai dati (modelli)
  • Servizi
  • fine frontale
  • test

Ho preso il modello da Rob Connery e la sua applicazione storefront ... sembra funzionare molto bene.

mvc-storefront


Per impostazione predefinita, crea sempre una nuova cartella all'interno dello stesso progetto

  • Riceverai un singolo assemblaggio (senza ulteriore ginnastica ILMerge)
  • Più facile da offuscare (perché avrai meno tipi e metodi pubblici, idealmente nessuno)

Separare il codice sorgente in più progetti ha senso solo se ...

  • Avere alcune parti del codice sorgente che fanno parte del progetto ma non possono essere implementate di default o affatto (test unitari, plug-in aggiuntivi, ecc.)
  • Più sviluppatori coinvolti e vuoi trattare il loro lavoro come una scatola nera consumabile. (non molto consigliato)
  • Se puoi chiaramente separare il tuo progetto in livelli / moduli isolati e vuoi assicurarti che non possano consumare i membri interni in modo incrociato. (anche non consigliato perché dovrai decidere quale aspetto è il più importante)

Se pensi che alcune parti del tuo codice sorgente potrebbero essere riusabili, non crearlo ancora come nuovo progetto. Attendi fino a quando non desideri veramente riutilizzarlo in un'altra soluzione e isolarlo dal progetto originale, se necessario. La programmazione non è un lego, il riutilizzo è solitamente molto difficile e spesso non si verifica come pianificato.


Separare le caratteristiche nei progetti è spesso un'ottimizzazione dell'architettura YAGNI. Quante volte hai riutilizzato quei progetti separati, davvero? Se non è un evento frequente, stai complicando lo sviluppo, la creazione, l'implementazione e la manutenzione per il riutilizzo teorico.

Preferisco di gran lunga separare le cartelle (usando gli spazi dei nomi appropriati) e rifattorizzare per separare i progetti quando hai un caso d'uso del riutilizzo reale.





projects-and-solutions