Il progetto a cui sto lavorando ha alcune classi. Queste classi possono essere raggruppate in due modi diversi. Sto cercando di decidere quale gruppo è il migliore come per il namespace. Attualmente sono un insieme di classi che affrontano l'utente che assomigliano a:
-    JamJar
-    HoneyJar
-    PeanutButterJar
- ecc ...
 Sono tutti simili in quanto tutti ereditano da   SpreadableJar   , ogni prefisso espandibile potrebbe essere considerato un "argomento" all'interno del progetto. 
Ho anche una serie di oggetti relativi a questi argomenti, ogni argomento di solito ha un insieme di definizioni costanti e classi di messaggi ad esso associati quindi mi ritrovo con un fascio di file come:
-    JamDefinitions
-    PeanutButterSpreadMessage
-    HoneyDefinitions
-    JamRemoveMessage
- ecc ...
Posso pensare a due modi per organizzare questi file:
- 
Per argomento Il primo livello è spazio dei nomi, il secondo è classe / nome del file. -  Jam
- Jar
- Definizioni
- removeMessage
- ecc ...
 
-  Miele
- Jar
- Definizioni
- ecc ...
 
-  PeanutButter
- Jar
- Definizioni
- SpreadMessage
- ecc ...
 
 
-  Jam
Questo sembra ordinato (rimuove i nomi duplicati) ed è utile per l'utente della libreria, ma significa che tutti i file Jar hanno lo stesso aspetto nella struttura del progetto, e ogni classe Jar non ha più un nome descrittivo. Significa anche che gli oggetti correlati sono raggruppati in modo che non abbiano bisogno di spaziare l'uno nell'altro nei namespace
- 
Per scopo -  Vasi
- JamJar
- HoneyJar
- PeanutButterJar
 
-  Definizioni
- JamDefinitions
- HoneyDefinitions
- PeanutButterDefinitions
 
-  Messaggi
- JamRemoveMessage
- ecc ...
 
 
-  Vasi
In questo modo è chiaro all'utente se sa che è necessario utilizzare Jars (il resto degli oggetti non sarà necessario per gli utenti esterni) e separa il gran numero di messaggi e i file di definizioni separati dal principale funzionalità, ma ora i Jars dovranno spostarsi negli altri namespace per le loro definizioni e messaggi e la denominazione dei file diventa più complessa. Il "Jar" di JamJar non può essere rimosso perché la classe non è solo "Jam".
Qual è l'approccio migliore qui? Mi manca qualche ovvia soluzione o errore nella mia struttura?