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?