Часто, особенно в библиотеках, пакеты содержат классы, которые организованы вокруг единой концепции. Примеры: xml, sql, user, config, db . Я думаю, что мы все вполне естественно чувствуем, что эти пакеты правильны в единственном числе .
com.myproject. xml. Элемент
com.myproject. SQL .Connection
com.myproject. пользователь .User
com.myproject. пользователь .UserFactory
Однако, если у меня есть пакет, который на самом деле содержит коллекцию реализаций одного типа - таких как задачи, правила, обработчики, модели и т. Д. , Что предпочтительнее?
com.myproject. Задачи .TakeOutGarbageTask
com.myproject. Задачи .DoTheDishesTask
com.myproject. задачи .PaintTheHouseTask
или же
com.myproject. задача .TakeOutGarbageTask
com.myproject. Задача .DoTheDishesTask
com.myproject. задача .PaintTheHouseTask
источник
Ответы:
Используйте множественное число для пакетов с однородным содержимым и единственное число для пакетов с неоднородным содержимым.
Класс похож на отношение к базе данных. Отношение к базе данных должно быть названо в единственном числе, поскольку его записи считаются экземплярами отношения. Функция отношения состоит в том, чтобы составлять сложную запись из простых данных.
Пакет, с другой стороны, не является абстракцией данных. Помогает в организации кода и разрешении конфликтов имен. Если пакет назван в единственном числе, это не означает, что каждый член пакета является экземпляром пакета; он содержит связанные, но разнородные понятия. Если он назван во множественном числе (как они часто являются ), я бы ожидать , что пакет содержит однородные понятия.
Например, тип должен быть назван
TaskCollection
вместоTasksCollection
, так как это коллекция, содержащая экземплярыTask
. Именованный пакетcom.myproject.task
не означает, что каждый содержащийся класс является экземпляром задачи. Там может бытьTaskHandler
, АTaskFactory
и т.д. пакет с именемcom.myproject.tasks
, однако, будет содержать различные типы, все задачи:TakeOutGarbageTask
,DoTheDishesTask
и т.д.источник
beans
является множественным, однакоjava.beans
содержит все виды классов, связанные с JavaBeans.java.beans
.Это, вероятно, зависит от конкретного языка. В .NET (C #) это наиболее определенно должно быть множественное число, если вероятна коллизия имен типа пространства имен (
type name expected but namespace found
ошибка). Я имел дело с этим, это не приятно и приводит к чрезмерной квалификации имен типов по всему коду. Пример .источник