【问题标题】:What argument names do you prefer in constructors? Suffixes, prefixes or smth else? [closed]您更喜欢构造函数中的哪些参数名称?后缀、前缀还是其他? [关闭]
【发布时间】:2014-04-04 07:46:28
【问题描述】:

例如,我有时会使用“Set”后缀,像这样:

ClassA
{
    public:
        ClassA(int xSet, int ySet):
            x(xSet),
            y(ySet)
        {
            ;
        }

    private:
        int x, y;
};

那么,有没有更好的写 xSet 和 ySet 的方法?

【问题讨论】:

  • 为什么不简单地使用相同的名称?使用this->x(x)初始化成员。

标签: c++ constructor identifier notation


【解决方案1】:

有时人们选择为数据成员使用特殊的后缀/前缀,以将它们与其他变量/参数区分开来。流行的命名约定是:

1) m_ 前缀(例如 m_x);

2)_后缀(如x_);

我个人更喜欢 x_,因为它的打字更少。

【讨论】:

  • 但是下划线前缀不是编译器保留的吗?我有时使用像 x_ 这样的下划线,这会导致一些逻辑错误,因为写 x 而不是 x_ 或类似的。但是谢谢你的帖子!还有其他想法吗?
  • 保留第一个字符的下划线,而不是任何地方的每个下划线。
  • 但最后的下划线也很难阅读,应该避免。前缀 m_my 是有效的解决方案,如果你走这条路。
  • m_ 代表什么?
  • @user3496846 我猜“m”代表“成员”
【解决方案2】:

每个项目/团队/组织都遵循自己的编码准则。如果您正在为自己或您的团队寻找可以采用的东西,谷歌搜索“C/C++ 编码指南”应该会为您提供一些有用的开始链接。

在我工作的地方,我们使用下划线(_)作为类成员数据的后缀。构造函数的参数名称相同,但没有下划线。

【讨论】:

  • 是的,这可以很好地从视觉上区分实例变量和本地变量。在允许它的语言中,我更喜欢下划线前缀。两者都不应用于公共字段,也就是属性。
  • 好吧,我想下划线是最好的,因为它在这里得到了所有的支持 :) 将检查指南,谢谢。
【解决方案3】:

嗯,显而易见的答案是为参数命名 是:initialXinitialY(或在二传手中,newXnewY)。按照这个逻辑,成员变量应该 可能是currentXcurrentY——通常的规则是 变量名应该是限定名词。

理论上这一切都很好。在实践中,似乎 以上可能是矫枉过正(或过于严格的应用 理论)。至少,我工作过的每一个地方,都有 关于命名成员的约定,以便可以立即 查看名称是否为成员。理想情况下,它不应该 必要的,但实际上,我们不是在理想的世界中工作。 我见过的两个最常见的约定是m_my 成员名称的前缀(s_our 用于静态 成员)。其他广泛使用的约定(使用下划线 作为前缀或后缀)应避免,因为前导和 尾随下划线不是很明显,并且使代码变硬 读书。 (前导下划线也往往用于非常 实现中的特殊符号,应特别注意 避免。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多