可能重复:
When do you make an underscore in front of an instance variable?
与Objective C一样,默认情况下,实例变量受到保护,您首选的名称是什么?
假设你有一个变量名,以下3种方式都有他们的支持者。
答案 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”警报掀起。
显然,这是非常主观的。
作为附录,下划线前缀实际上只对方法名称特别危险,因为编译器不会立即暴露冲突,但如果你是下划线粉丝,那么使用后缀可能更好