Anche se nessun metodo particolare, può essere privo di svantaggi, qui è quello che usiamo
Cartella per nucleo Application o modello. Ciò include sottocartelle per eventuali librerie di terze parti utilizzate e cartelle per classi specializzate modello . Ad esempio, ci sarebbe una cartella per la gestione del servizio web.
cartella per un modulo importante che includerebbe sotto-cartelle per ogni schermata contenente file di classe, pennini e le risorse (che possono comportare più sottocartelle secondo il bisogno).
Cartella per secondo modulo principale e così via ..
Questo modello ci serve uno scopo importante. Il nostro core dell'applicazione contiene elementi come la registrazione, la crittografia/decrittografia dei dati, ecc. Quindi è molto improbabile che venga modificato per molte applicazioni che sviluppiamo. Allo stesso modo ci sarebbero alcune applicazioni che avrebbero bisogno della funzionalità del modulo principale uno e aggiungere alcune altre cose. Pertanto questi tre gruppi di cartelle vengono mantenuti come repository separati nella subversion.
Ora, quando iniziamo un nuovo progetto, creiamo un nuovo repository per il progetto e lo colleghiamo al repository principale dell'applicazione e ad altri repository di moduli principali in base alle necessità. Quindi qualsiasi modifica apportata nel core dell'applicazione da un team di progetto si riflette anche in altri progetti. Lo stesso con altri moduli principali. Questo ci aiuta anche a raggiungere la completa modularità.
Ovviamente ci sarebbero degli svantaggi per questo schema, ma questo schema ci è adatto per molti anni :)