Souvent, dans les bibliothèques en particulier, les packages contiennent des classes organisées autour d'un concept unique. Exemples: xml, sql, user, config, db . Je pense que nous pensons tous assez naturellement que ces paquets sont corrects au singulier .
com.myproject. xml .Element
com.myproject. sql .Connection
com.myproject. utilisateur .utilisateur
com.myproject. utilisateur .UserFactory
Toutefois, si mon package contient en réalité une collection d'implémentations d'un seul type - telles que des tâches, des règles, des gestionnaires, des modèles, etc. , quelle est préférable?
com.myproject. tâches .TakeOutGarbageTask
com.myproject. tâches .DoTheDishesTask
com.myproject. tâches .PaintTheHouseTask
ou
com.myproject. tâche .TakeOutGarbageTask
com.myproject. tâche .DoTheDishesTask
com.myproject. tâche .PaintTheHouseTask
la source
Réponses:
Utilisez le pluriel pour les packages avec un contenu homogène et le singulier pour les packages avec un contenu hétérogène.
Une classe est similaire à une relation de base de données. Une relation de base de données doit être nommée au singulier car ses enregistrements sont considérés comme des instances de la relation. La fonction d'une relation est de composer un enregistrement complexe à partir de données simples.
En revanche, un package n'est pas une abstraction de données. Il aide à l'organisation du code et à la résolution des conflits de noms. Si un paquet est nommé au singulier, cela ne signifie pas que chaque membre du paquet est une instance du paquet; il contient des concepts liés mais hétérogènes. S'il est nommé au pluriel (comme ils le sont souvent ), je suppose que le package contient des concepts homogènes.
Par exemple, un type doit être nommé à la
TaskCollection
place deTasksCollection
, car il s'agit d'une collection contenant des instances d'unTask
. Un package nommécom.myproject.task
ne signifie pas que chaque classe contenue est une instance d'une tâche. Il pourrait y avoir unTaskHandler
, unTaskFactory
, etc. Un paquet nommécom.myproject.tasks
, cependant, contiendrait différents types qui sont toutes les tâches:TakeOutGarbageTask
,DoTheDishesTask
, etc.la source
beans
est pluriel, maisjava.beans
contient toutes les classes de types liées à JavaBeans.java.beans
.Cela dépend probablement d'une langue spécifique. En .NET (C #), il devrait très certainement être un pluriel si une collision de noms de type d'espace de noms est probable (l'
type name expected but namespace found
erreur). J'ai traité cela, ce n'est pas agréable et cela entraîne une surqualification des noms de type dans tout le code. Exemple .la source