Mar*_* Ba 6 c++ initialization naming-conventions initializer-list
当然没有一种正确的方法可以做到这一点,但我甚至无法想到任何体面的命名方案,这就是我在这里问的原因.(所以:虽然所有答案都是主观的,但它们仍然有用!)
问题如下:对于简单的聚合结构,我们不使用成员var前缀.
struct Info {
int x;
string s;
size_t z;
Info()
: x(-1)
, s()
, z(0)
{ }
};
Run Code Online (Sandbox Code Playgroud)
然而,提供初始化结构的初始化程序ctor有时是有用的,但是当参数的最自然名称已被成员变量本身占用时,我无法为参数提供合适的命名方案:
struct Info {
int x;
string s;
size_t z;
Info(int x?, string s?, size_t z?)
: x(x?)
, s(s?)
, z(z?)
{ }
};
Run Code Online (Sandbox Code Playgroud)
在这种情况下,其他人使用了什么?
fiz*_*zer 12
使用相同的名称 - 它们不会发生碰撞.
"在查找构造函数(12.6.2)的mem-initializer表达式中使用的名称...期间,函数参数名称是可见的,并隐藏在包含的块,类或命名空间范围中声明的实体的名称功能声明." 3.4.1 C++ 2003
为什么要发明前/后缀?我只是用同一个名字.C++旨在实现这一目标.
struct Info {
int x;
string s;
size_t z;
Info(int x, string s, size_t z)
: x(x)
, s(s)
, z(z)
{ }
};
Run Code Online (Sandbox Code Playgroud)
这是直截了当的.
我倾向于使用"a"前缀 - 就像"无论什么"一样.
Info(int aX, string const & aS, size_t aZ);
struct Time {
Time(time_t aUnixTime) : UnixTime(aUnixTime) {}
time_t UnixTime;
};
Run Code Online (Sandbox Code Playgroud)