I nomi dei pacchetti dovrebbero essere singolari o plurali?

202

Spesso, soprattutto nelle librerie, i pacchetti contengono classi organizzate attorno a un singolo concetto. Esempi: xml, sql, user, config, db . Penso che tutti noi sentiamo abbastanza naturalmente che questi pacchetti sono corretti nel singolare .

com.myproject.xml.Element
com.myproject.sql.Connection
com.myproject.user.User
com.myproject.user.UserFactory

Tuttavia, se ho un pacchetto che contiene effettivamente una raccolta di implementazioni di un singolo tipo - come attività, regole, gestori, modelli, ecc. , che è preferibile?

com.myproject.tasks.TakeOutGarbageTask
com.myproject.tasks.DoTheDishesTask
com.myproject.tasks.PaintTheHouseTask

o

com.myproject.task.TakeOutGarbageTask
com.myproject.task.DoTheDishesTask
com.myproject.task.PaintTheHouseTask

    
posta Nicole 12.05.2011 - 20:28
fonte

2 risposte

260

Usa il plurale per i pacchetti con contenuti omogenei e il singolare per i pacchetti con contenuti eterogenei.

Una classe è simile a una relazione di database. Una relazione di database dovrebbe essere nominata singolarmente in quanto i suoi record sono considerati istanze della relazione. La funzione di una relazione è di comporre un record complesso da dati semplici.

Un pacchetto, d'altra parte, non è un'astrazione di dati. Assiste con l'organizzazione del codice e la risoluzione dei conflitti di denominazione. Se un pacchetto è denominato nel singolare, ciò non significa che ogni membro del pacchetto sia un'istanza del pacchetto; contiene concetti correlati ma eterogenei. Se è denominato al plurale (come spesso < a href="http://msdn.microsoft.com/en-us/library/system.collections.aspx"> sono ), mi aspetto che il pacchetto contenga concetti omogenei.

Ad esempio, un tipo dovrebbe essere denominato TaskCollection anziché TasksCollection , in quanto è una raccolta contenente istanze di Task . Un pacchetto chiamato com.myproject.task non significa che ogni classe contenuta è un'istanza di un'attività. Potrebbe esserci un TaskHandler , un TaskFactory , ecc. Un pacchetto chiamato com.myproject.tasks , tuttavia, conterrebbe diversi tipi che sono tutti i compiti: TakeOutGarbageTask , DoTheDishesTask , ecc.

    
risposta data 12.05.2011 - 20:56
fonte
0

Questo probabilmente dipende da una lingua specifica. In .NET (C #) il più decisamente dovrebbe essere un plurale se è probabile che si verifichi una collisione di nomi di tipo namespace (l'errore type name expected but namespace found ). Mi sono occupato di questo, non è piacevole e si traduce in nomi di tipo troppo qualificati in tutto il codice. Esempio .

    
risposta data 05.08.2016 - 13:19
fonte

Leggi altre domande sui tag