关于iphone:在Objective C中命名实例变量的首选方法

Preferred way to name instance variable in Objective C

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
When do you make an underscore in front of an instance variable?

与目标C中一样,实例变量在默认情况下是受保护的,您首选的命名方法是什么?

假设您有一个变量名,下面三种方法有其支持者。

  • 福禄
  • 福克

  • 福。我一直鄙视"foo"或"foo"的风格。


    苹果公司的可可编码指南建议您避免使用下划线前缀:

    Avoid the use of the underscore
    character as a prefix meaning private,
    especially in methods. Apple reserves
    the use of this convention. Use by
    third parties could result in
    name-space collisions; they might
    unwittingly override an existing
    private method with one of their own,
    with disastrous consequences.

    由于我不知道任何后面的下划线约定,我不知道为什么不应该只使用foo。


    根据_foo,您不应该使用下划线作为前缀,这是为Apple保留的(并防止您意外地重新定义您不知道的变量!)

    我喜欢foo_,但前提是你要写附件。否则我只使用foo。但是,对于单独使用内存的情况,最好始终使用访问器,并在实现中声明那些不希望在私有类别中公开的访问器,如下所示:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    @interface MyClass ()
    @property (nonatomic, retain) NSArray *myArray;
    @end

    @implementation
    @synthesize myArray = myArray_;
    @synthesize myPublicString = myPublicString_;

    - (void) dealloc
    {
       [myArray_ release]; myArray_ = nil;
       [myPublicString_ release]; myPublicString_ = nil;
    }

    ....

    @end


    因为我似乎是少数人,所以为了平衡的利益,我会把我的两分钱投进去:

    我喜欢下划线。我认为它一眼就能使代码语义更具可读性。当然,语法突出显示也可以做到这一点,但我一直倾向于使用与IDE/主题无关的方法。一旦你习惯了,很高兴让这个小家伙立刻在你的脑袋里启动"直接进入一个IVAR"警报。

    显然,这是非常主观的。

    作为一个附录,下划线前缀对于方法名来说确实非常危险,编译器不会立即暴露冲突,但是如果您是下划线爱好者,使用后缀可能更好。


    一般来说,为什么会有人用任何后缀或前缀来命名他们的私有变量呢?大多数现代工具都能很好地对它们进行不同的着色。我喜欢简单的foo。