I nomi dei pacchetti devono essere singolari o plurali?


227

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

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

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

com.myproject. attività .TakeOutGarbageTask
com.myproject. attività .DoTheDishesTask
com.myproject. attività .PaintTheHouseTask

o

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


5
singolare proprio come i nomi delle tabelle del database dovrebbero essere sempre singolari ma per motivi diversi. Guarda ad esempio qualsiasi libreria standard popolare come Java o Python.

@Jarrod Roberson: per favore pubblica la tua risposta come una risposta in modo che possiamo votarla correttamente.
S.Lott

@Jarrod avrà bisogno di alcuni esempi, dato che nelle librerie standard la maggior parte delle classi rientra nella prima categoria che ho elencato.
Nicole,

@Renesis Dai un'occhiata alla mia risposta aggiornata.
Matthew Rodatus,

@Matthew - Mi piace. Hai espresso quello che sospettavo ma non sapevo come codificare.
Nicole,

Risposte:


293

Utilizzare il plurale per pacchetti con contenuti omogenei e il singolare per pacchetti con contenuti eterogenei.

Una classe è simile a una relazione di database. Una relazione di database dovrebbe essere nominata al singolare poiché i suoi record sono considerati istanze della relazione. La funzione di una relazione è quella di comporre un record complesso da dati semplici.

Un pacchetto, d'altra parte, non è un'astrazione di dati. Fornisce assistenza nell'organizzazione del codice e nella risoluzione dei conflitti di denominazione. Se un pacchetto è nominato al singolare, ciò non significa che ogni membro del pacchetto sia un'istanza del pacchetto; contiene concetti correlati ma eterogenei. Se è chiamato al plurale (come spesso accade ), mi aspetto che il pacchetto contenga concetti omogenei.

Ad esempio, un tipo dovrebbe essere chiamato TaskCollectioninvece di TasksCollection, in quanto è una raccolta contenente istanze di a Task. Un pacchetto denominato com.myproject.tasknon significa che ogni classe contenuta sia un'istanza di un'attività. Ci potrebbe essere una TaskHandler, una TaskFactory, ecc Un pacchetto di nome com.myproject.tasks, tuttavia, dovrebbe contenere diversi tipi che sono tutti i compiti: TakeOutGarbageTask, DoTheDishesTask, etc.


13
Per una domanda simile, consultare english.stackexchange.com/q/25713 . Una categoria è analoga al singolare e un tipo è analogo al plurale.
Matthew Rodatus,

4
Il link che hai fornito mostra un'eccezione a questa regola. beansè plurale, tuttavia java.beanscontiene tutte le classi di tipo correlate a JavaBeans.
SkyDan,

Buona risposta, ma non sono d'accordo con la logica delle relazioni con il database. Le relazioni in un ERD sono singolari perché mostrano relazioni tra entità. Le tabelle sono un'implementazione fisica delle relazioni e contengono più righe e dovrebbero quindi essere IMO plurale. La risposta a "cosa c'è in questa tabella?" è "utenti" non "utente". Certo, sembra che la denominazione singolare sia più comune nel mondo aziendale (C #, Java) che in comunità come Ruby, Python, Javascript e PHP.
ryeguy,

4
Il commento di @ SkyDan sottolinea qualcosa di molto importante che viene completamente trascurato qui. Mi sembra che la denominazione plurale di "java.beans" sia stata in realtà un errore, e invece avrebbe dovuto essere chiamata "java.bean", singolare.
Vicky Chijwani,

6
@VickyChijwani @SkyDan poiché JavaBeans ™ è un marchio, probabilmente hanno voluto mantenere il nome così com'è per riferirsi alla tecnologia stessa, e quindi hanno usato java.beans.
Hejazi,

1

Questo probabilmente dipende da una lingua specifica. In .NET (C #) dovrebbe sicuramente essere un plurale se è probabile una collisione di nomi di tipo namespace (l' type name expected but namespace founderrore). Ho affrontato questo, non è piacevole e si traduce in nomi di tipo troppo qualificati in tutto il codice. Esempio .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.