Должны ли имена пакетов быть единственными или множественными?

Часто, особенно в библиотеках, пакеты содержат классы, которые организованы вокруг одной концепции. Примеры: xml, sql, user, config, db . Я думаю, мы все прекрасно чувствуем, что эти пакеты верны в единственном .

  

com.myproject. <Сильный> XML .Element
  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

192 голоса | спросил Nicole 12 Maypm11 2011, 22:28:18

2 ответа


245

Используйте множественное число для пакетов с однородным содержимым и единственное для пакетов с гетерогенным содержимым.

Класс похож на отношение базы данных. Отношение базы данных должно быть названо в единственном числе, поскольку его записи считаются экземплярами отношения. Функция отношения состоит в том, чтобы составить сложную запись из простых данных.

Пакет, с другой стороны, не является абстракцией данных. Он помогает в организации кода и разрешении конфликтов имен. Если пакет указан в единственном числе, это не означает, что каждый член пакета является экземпляром пакета; он содержит связанные, но гетерогенные концепции. Если он указан во множественном числе (поскольку они часто есть ), я ожидал бы, что пакет содержит однородные понятия.

Например, тип должен быть назван TaskCollection вместо TasksCollection, так как это коллекция, содержащая экземпляры Task. Пакет с именем com.myproject.task не означает, что каждый содержащийся класс является экземпляром задачи. Может существовать TaskHandler, TaskFactory и т. Д. Пакет с именем com.myproject.tasks, однако, будет содержать разные типы, которые все задачи: TakeOutGarbageTask, DoTheDishesTask и т. д.

ответил Matthew Rodatus 12 Maypm11 2011, 22:56:13
0

Это, вероятно, зависит от конкретного языка. В .NET (C #) это определенно должно быть множественным числом, если вероятность столкновения имен пространства имен вероятна (ожидаемое имя типа , но пространство имен найдено). Я справился с этим, это не приятно и приводит к чрезмерно квалифицированным именам типов по всему коду. Пример .

ответил Den 5 PM00000020000001831 2016, 14:19:18

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132