我想问一下Cocoa项目中本地 BOOL
变量的命名约定。以下哪项是首选?
// Style #1
BOOL isNightModeEnabled = NO;
// Style #2
BOOL nightModeEnabled = NO;
谢谢!
答案 0 :(得分:2)
只是想一想。
Apple自己的Cocoa方法不会将BOOL
变量用作参数的前缀:
... whenHighlighted:(BOOL)highlighted
... animated:(BOOL)animated
这同样适用于Xcode的setter自动完成功能。因此,似乎用is
为局部变量添加前缀不是一个好主意,因为最终会有一些前缀为is
的变量而其他变量不是。因此,使用is
是一个很好的命名约定 for getters ,而不是局部变量。
答案 1 :(得分:1)
风格2很好。它使得属性和KVO风格的名称更好:
-(void)setNightModeEnabled;
-(BOOL)nightModeEnabled;
或
@property (assign, nonatomic, getter=isNightModeEnabled) BOOL nightModeEnabled;
答案 2 :(得分:0)
我个人的偏好是:
bool isNightModeEnabled = false;
它更像英语,将'is'放入。
我总是使用C99布尔类型而不是Apple的BOOL
,除非Cocoa API需要这样做。这是因为BOOL
只是char的typedef,对于布尔值来说可能会有问题。例如,以下单元测试失败,即使它不是您对C
-(void) testBool
{
int a = 513;
int b = 257;
STAssertTrue(a - b, @"Should be true");
}
原因是a-b为256,当向下转换为BOOL
参数类型时,所有非零位都将丢失。如果STAssertTrue()
的第一个参数改为bool
,则转换将按预期工作。