Классы именования: единственное или множественное число? [закрыто]

58

Мне всегда сложно выбирать между формами имен в единственном и множественном числе:

CustomerRepository vs. CustomersRepository
CustomerService vs. CustomersService
CustomerController vs. CustomersController

А для составных имен это еще сложнее:

OrderCustomerRepository vs. OrderCustomersRepository vs. OrdersCustomersRepository

Какой подход вы предпочитаете и почему?

SiberianGuy
источник
Будет ли класс содержать хранилище для нескольких клиентов? Если это один репозиторий для одного клиента ...
JeffO
2
@Jeff O, репозиторий может одновременно содержать методы GetCustomerById и GetCustomers
SiberianGuy
2
В моделировании данных имя таблицы должно быть единственным. Если ваше приложение использует доменные классы, которые соответствуют 1-1 вашей модели данных, то, возможно, будет хорошей идеей оставить именование в единственном числе. Конечно, отображение классов в таблицы в стиле 1-1 может быть не лучшим способом построения вашей объектной модели для ОО-приложения, но это не вопрос.
NoChance

Ответы:

73

Единственное, что я плюрализирую, это коллекции.

foreach (var customer in customers)
{
    // do something with customer
}

Все ваши примеры являются отдельными объектами, поэтому они не являются множественными. Да, имена относятся к объектам, которые могут иметь несколько экземпляров, но все, что вам нужно знать в имени, - это объектный объект (т. Е. Клиент).

Таким образом, во всех ваших примерах единственное число является правильной формой. Делает жизнь намного проще.

Роберт Харви
источник
2
Я бы использовал customerCollectionдля коллекций, но в остальном я согласен. Это лучшая практика в проектировании баз данных, и она неплохо работает и в коде.
Jan_V
12
Мне не нравятся такие слова, как «Коллекция» здесь. В английском есть очень хороший способ ссылаться на коллекцию вещей, используя множественное число.
Gort the Robot
А Collectionкак насчет Iterator?
Джулиан
@Julian An Iteratorбыла бы некой подпрограммой, а не структурой данных для хранения нескольких объектов, верно?
Уилсон
64

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

Тем не менее, для определения того, будет ли возвращено одно значение или набор из них, следует соответственно преобразовать имена методов и свойств.

back2dos
источник
7

Определенно в единственном числе. Вы не создаете объект People, вы создаете коллекцию Personобъектов. Единственный раз , когда я хотел бы использовать множественные бы для статических классов, то есть SupportServices, StringUtilsи т.д. Однако в этом случае класс действует больше как пространство имен , чем все остальное.

обкрадывать
источник
1
И, думаю, все это время я использовал коллекции Peoples!
Джордан
2
Перечислите <человек> людей ... мне кажется, хорошо, @ Джордан.
StevenV
1

Помните, класс - это шаблон для объекта. Так что подумайте об объекте, на который вы ссылаетесь.

Часто это особая сущность, особенно когда это сущность ORM. Иногда это может быть коллекция.

Я считаю, что ответ зависит от контекста.

Инди
источник