函数声明参数命名最佳实践(C ++)

时间:2011-12-06 17:41:48

标签: c++ function

在函数声明中,虽然不必命名参数,但最好将它们命名为?这有什么优点和缺点?

6 个答案:

答案 0 :(得分:7)

命名它们的优点是您可以在文档中引用它们。 (这包括您的编辑器/ IDE选择它们并在您键入对此类函数的调用时将它们作为提示呈现给您。)

缺点是名称可能会根据函数的实现而改变,除非函数声明中的名称可能与函数定义中的名称不同。 (IOW:我认为没有劣势。)

答案 1 :(得分:3)

主要是出于文件原因

答案 2 :(得分:3)

使用支持自动完成的IDE时,命名参数具有显着优势。当您开始键入函数名称时,IDE会弹出一个建议列表。看到findUser(string firstName, string lastName)告诉您的不仅仅是findUser(string,string)

答案 3 :(得分:1)

这更像是一种风格问题。就个人而言,如果我看到没有命名参数的函数声明,我发现很难阅读。我认为你可以更强大地输入C ++,它就越好。

答案 4 :(得分:1)

一个优点是,当参数类型相同时,它们可以传达更多信息

考虑

CoordSystem CreateCoordinateSystem( const UnitVector& xdirection, 
    const UnitVector& ydirection, const UnitVector& zdirection
)

结束

CoordSystem CreateCoordinateSystem( const UnitVector& , 
    const UnitVector& , const UnitVector& )

答案 5 :(得分:0)

在声明中,没有任何程序上的优点或缺点。但是,我能想到一个风格优势:

如果不在函数中使用参数,则不能在声明和定义中命名此参数:

void foo(int);

void foo(int)
{
}

您在定义中未使用的命名参数不是非法的,但它是一个lint警告!我提到的样式优势是不会在声明中命名参数,以便浏览头文件的人知道定义中没有使用某个参数。但是,只有在同步定义和声明之间的非命名时才会这样做。

以下是您可能不想为参数命名的示例:

class Base
{
    virtual void foo(int a) = 0;
};

class Child1
{
    virtual void foo(int a) { std::cout << a + 1 << std::endl; }
};

class Child2
{
    virtual void foo(int) { std::cout << "mwahaha" << std::endl; }
};

在这种情况下,参数未命名,但仍必须提供,因为函数原型必须与其父级匹配。

相关问题