2013-09-02 2 views
0

Я пишу функцию, чтобы определить, существует ли элемент в контейнере. Я не знаю, как выбрать имя функции между:Что более условное имя функции между «ContainsElement» и «DoesContainElement»?

bool ContainerType::ContainsElement(const ElementType& elem);

и

bool ContainerType::DoesContainElement(const ElementType& elem);

Рассмотрим следующие два сценария:

Вариант 1:

ContainerType coll; 
ElementType elem; 
... 

if (coll.ContainsElement(elem)) 
{ 
    cout << elem << " exists." << endl; 
} 

Версия 2:

ContainerType coll; 
ElementType elem; 
... 

if (coll.DoesContainElement(elem)) 
{ 
    cout << elem << " exists." << endl; 
} 

Как я понимаю, я думаю, что версия 1 больше похожа на естественный английский. Тем не менее, я также нашел, что стиль версии 2 используется более широко.

Как вы знаете?

Update:

FltIsOperationSynchronous 
FltIsIoCanceled 
FltIsVolumeWritable 

Три названия функций выше взяты из документации Microsft в. Если префикс "Flt" отбрасываются, они:

IsOperationSynchronous 
IsIoCanceled 
IsVolumeWritable 

вместо

OperationIsSynchronous 
IoIsCanceled 
VolumeIsWritable 

Почему?

ответ

1

contains - самый популярный. containsElement может быть, и я никогда не видел doesContainElement. Наверное, слишком долго.

Если вы пытаетесь подражать английскому языку, считайте, что функции bool обычно используются с if. Что звучит лучше:

if(a.containsElement(b)) 

    if(a.doesContainElement(b)) 

    if(a.contains(b)) 

? Я думаю, 3, затем 1, а затем 2, не так ли?

+0

Просмотрите мое обновление. Я думаю, что Microsoft и многие другие компании, похоже, любят еще 2. Зачем? – xmllmx

+0

@xmllmx Одно из возможных объяснений состоит в том, что, начиная с вспомогательного глагола ('is',' does', 'has' и т. Д.), Ясно, что функция возвращает' bool'. 'contains' не очень далек от него, но 1) вы не использовали бы его в одиночку в английском вопросе, и 2) вам нужно дойти до конца, чтобы заметить, что это глагол, который намного длиннее, чем' is', ' делает', или 'has'. –

Смежные вопросы