【问题标题】:Which is more conventional function name between "ContainsElement" and "DoesContainElement"? [closed]“ContainsElement”和“DoesContainElement”之间哪个更传统的函数名称? [关闭]
【发布时间】:2013-09-02 03:32:57
【问题描述】:

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

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

为什么?

【问题讨论】:

    标签: c++ function coding-style maintainability


    【解决方案1】:

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

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

        if( a.containsElement(b) )
    
        if( a.doesContainElement(b) )
    
        if( a.contains(b) )
    

    ?我认为是 3,然后是 1,然后是 2,不是吗?

    【讨论】:

    • 请查看我的更新。我认为微软和许多其他公司似乎更喜欢 2 个。为什么?
    • @xmllmx 一种可能的解释是,从一个助动词(isdoeshas 等)开始,很明显该函数返回一个boolcontains 离它不是很远,但是 1)你不会在英语问题中单独使用它,2)你需要到达末尾才能注意到它是一个动词,它比 is,@ 长得多987654333@,或has
    猜你喜欢
    • 2012-11-19
    • 2011-08-21
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    相关资源
    最近更新 更多