【问题标题】:Why does google suggest to use trailing underscores when naming iVars in Objective-C?为什么 google 在 Objective-C 中命名 iVar 时建议使用尾随下划线?
【发布时间】:2011-08-03 12:26:54
【问题描述】:

在很多人关注的谷歌Objective-C Style guide中,谷歌表示

类成员变量有尾随 下划线

为什么?这样做有什么好的理由吗?我发现苹果通常在开始下划线时命名一个 ivar。

【问题讨论】:

  • 一个可能的原因是实例变量名称永远不会与 Apple 的名称冲突。我觉得这不是什么大问题,因为在这种情况下编译器会报错,如果发生这种情况,重构工具可以很容易地重命名实例变量。
  • +1 因为我不知道 Google 有 Objective-C 风格指南。

标签: objective-c naming-conventions underscore.js trailing


【解决方案1】:

这只是他们喜欢的风格。下划线,无论是前缀还是后缀,都表示它是私有 ivar,而不是属性或公共 ivar。

【讨论】:

    【解决方案2】:

    我更喜欢尾随下划线,因为如果我有:

    int test_;
    

    我可以输入't',它会立即出现在代码完成中。

    int _test;
    

    我必须输入 '_t' 才能进入代码完成中的 T。

    这是否属实,不确定,但这是我说服自己的。

    【讨论】:

    • 我喜欢完全相反,下划线作为第一个字符,我可以输入“_”并获得所有私有变量的完成列表
    • 我也更喜欢开头的下划线,但很高兴了解为什么有些开发人员选择了尾随下划线。
    • 我也更喜欢前缀强调我的 ivars。原因是,您应该更喜欢使用属性而不是实际的底层 ivar。它具有许多优点,例如开箱即用的 KVO 和原子同步。编译器将知道何时优化和直接访问 ivar。前缀 ivar 可以防止我意外使用 ivar 而不是属性。
    【解决方案3】:

    Core Data 的重度用户也会注意到 Core Data 属性不能以非字母字符开头。如果您想在您的应用程序和各种项目中一致地命名 ivars,这是在您的 ivars 附加而不是预先添加下划线的另一个原因。

    如果您不经常使用 Core Data,或者您在命名约定上没有强迫症倾向,那么最适合您的可能就是正确的答案。

    【讨论】:

      【解决方案4】:

      这可能是他们的C++ style guide 的结转。在 C++ 中,前导下划线是 reserved

      他们对objective-c ivars的命名约定与c++私有成员变量一致。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-07
        • 2011-10-16
        • 1970-01-01
        • 2013-05-22
        • 2016-10-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多