<?= $vars['title'] ?>
Ad esempio, se stessimo scrivendo una libreria da zero e avessimo File
, FileHandle
, DirHandle
e FileSystem
classi, ognuno di questi andrebbe all'interno di un pacchetto / spazio dei nomi chiamato file
? O uno chiamato filesystem
? O os
o fs
? E se uno dei primi due, sarebbe un problema che abbiamo avuto file::File
? So che almeno in Python ci sono pacchetti strutturati in questo modo. Ma sembra un po 'brutto avere il nome della classe all'interno del pacchetto con lo stesso nome.
Un'alternativa sarebbe mettere la classe allo stesso livello di gerarchia del pacchetto, quindi potresti avere:
class File {
getFileSystem () : FileSystem
getGroupId () : int
getSize () : int
...
}
// functions which don't need to know the internals of the File class
file::putContents
file::getContents
file::readLine
file::truncate
Ma poi hai la domanda di ... metti qualcosa come FileHandle
allo stesso livello di File
, o lo metti nel pacchetto file
? E se quest'ultimo, usi file::FileHandle
o semplicemente file::Handle
? Che dire delle directory? Faresti file::DirHandle
? O tutto dovrebbe essere in un pacchetto os
?
Credo che sto cercando di conciliare l'idea di raggruppare concetti correlati in pacchetti gerarchici e di mantenere i nomi sensibili, descrittivi e non ridondanti.
Una possibile risposta a ciò che ho considerato è che i pacchetti dovrebbero essere utilizzati solo dove tutto ciò che potrebbe essere incluso nel pacchetto potrebbe avere il nome del pacchetto nel suo nome. Ad esempio, inserire una classe Directory
nel pacchetto file
non sarebbe corretto, dal momento che non diresti DirectoryFile
(o almeno, di solito). Per contrasto, per qualcosa come Google Maps, avrebbe senso inserire elementi su indicatori e mappe di Google Maps in un pacchetto chiamato google::maps::
. Allo stesso modo, un pacchetto chiamato mysql
avrebbe senso.
Quindi i pacchetti sono davvero perfetti solo per aziende e prodotti, non per concetti? O sto cercando di raggruppare concetti a un livello troppo alto? Ci sono delle guide di stile per questo genere di cose?