在函数声明中,虽然不必命名参数,但最好将它们命名为?这有什么优点和缺点?
答案 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; }
};
在这种情况下,参数未命名,但仍必须提供,因为函数原型必须与其父级匹配。