在Objective C中命名实例变量的首选方法

时间:2011-04-15 16:36:02

标签: iphone objective-c

  

可能重复:
  When do you make an underscore in front of an instance variable?

与Objective C一样,默认情况下,实例变量受到保护,您首选的名称是什么?

假设你有一个变量名,以下3种方式都有他们的支持者。

  1. _foo
  2. FOO _
  3. FOO

5 个答案:

答案 0 :(得分:6)

FOO。我一直鄙视_ foo 或foo_ styles。

答案 1 :(得分:2)

Apple的Coding Guidelines for Cocoa建议您避免使用下划线前缀:

  

避免使用下划线   字符作为前缀意味着私人,   尤其是方法。 Apple储备   使用这个惯例。使用方式   第三方可能导致   名称 - 空间碰撞;他们可能   无意中覆盖现有的   私有方法与他们自己的一个,   带来灾难性的后果。

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

答案 2 :(得分:1)

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

我喜欢foo_,但前提是您正在编写访问者。否则我只使用foo。但是对于单独的内存使用,最好总是使用访问器,并在实现中声明那些你不想在私有类中公开的访问器:

@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

答案 3 :(得分:0)

一般而言,为什么有人会用任何后缀或前缀命名他们的私有变量,大多数现代工具都会以不同的方式对它们进行不同的着色。我更喜欢foo。

答案 4 :(得分:0)

由于我似乎属于少数,我会继续为了平衡而投入两分钱:

我喜欢下划线的品种。我认为它使代码语义一目了然。当然,语法高亮也可以做到这一点,但我一直更喜欢IDE /主题独立方法。一旦你习惯了,很高兴让这个小家伙立刻把你脑中的“直接接触到这里的ivar”警报掀起。

显然,这是非常主观的。

作为附录,下划线前缀实际上只对方法名称特别危险,因为编译器不会立即暴露冲突,但如果你是下划线粉丝,那么使用后缀可能更好