Подтвердить что ты не робот

"список элементов" или "список элементов"

Английский язык не является моим родным языком, и я не могу понять, как правильно писать указанные образцы. Когда вы говорите что-то, что совокупность множественного объекта, такого как "коллекция марок", вы можете сказать альтернативно: "сбор марок", правильно? Если вы скажете "коллекция штампов", это будет означать некоторую "коллекцию", которая представляет собой единый "штамп".

Но часто я вижу классы с именами типа "ItemList" - разве это не означает, что такой класс является списком, который является элементом чего-то еще? Такой образец более близок:

class ItemList: List<Item>

Разве это не должно быть так?:

class ItemsList: List<Item>

Почему это так редко написано? Или это какое-то соглашение об именах языков программирования? Или просто правильные английские предложения?:)

4b9b3361

Ответ 1

На английском языке "коллекция марок" является "коллекцией марок". (В лучшем случае "сбор марок" будет понят).

В программировании я не совсем уверен, почему, но мы 1 иногда используем форму "StampsCollection" .

Возможно, это связано с тем, что мы пытаемся использовать более точный и логичный язык, чем предлагает традиционный английский; мы начинаем с имени "Item", умножаем его на "Items", а затем уточняем, что наша коллекция "Items" является "List", а не "Array" или какой-либо другой реализацией.

Вероятно, вы увидите оба варианта, и это не имеет большого значения.

Разумеется, ни на английском, ни на программировании ItemsList не подразумевается список коллекций Items, по крайней мере, не для большинства людей.


1... для некоторого значения "мы". Выбор наименований, конечно, зависит от личных предпочтений. Тем не менее, я лично видел это как тенденцию.

Ответ 2

Я нахожу ItemList гораздо более описательным. Это list объектов типа Item.

С другой стороны, если у вас есть коллекция объектов Item, вы можете назвать ее Items, а ItemsList будет обозначать list коллекций.

Ответ 3

class Items: List<Item>

И более читаемый, в общем, я делаю typedef

typedef List<Item> Items;

с более специализированным классом, который скрывает список

class Encapsulation
{
    Items m_items;
}

"Предпочитают композицию путем агрегирования по наследованию" - распространенная идиома в ООП (цитирование Саттера/Александреску)

Инкапсуляция коллекции в большинстве случаев является хорошей практикой, которая снижает сложность вызова кода.