哪个是“ContainsElement”和“DoesContainElement”之间更常规的函数名?

时间:2013-09-02 03:32:58

标签: c++ function coding-style maintainability

我正在编写一个函数来确定元素是否存在于容器中。我不知道如何选择之间的函数名称:

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的风格使用得更广泛。

你有什么看法?

更新

FltIsOperationSynchronous
FltIsIoCanceled
FltIsVolumeWritable

以上三个功能名称摘自Microsft的文档。如果剥离前缀“Flt”,则它们是:

IsOperationSynchronous
IsIoCanceled
IsVolumeWritable

而不是

OperationIsSynchronous
IoIsCanceled
VolumeIsWritable

为什么呢?

1 个答案:

答案 0 :(得分:1)

contains是最受欢迎的。 containsElement可能是,我从未见过doesContainElement。可能太长了。

如果您尝试模仿英语,请认为bool函数通常与if一起使用。听起来更好:

    if( a.containsElement(b) )

    if( a.doesContainElement(b) )

    if( a.contains(b) )

?我想3,然后是1,然后是2,不是吗?