Objective-C和Cocoa中本地BOOL变量的命名约定

时间:2013-03-30 14:54:27

标签: objective-c cocoa-touch cocoa

我想问一下Cocoa项目中本地 BOOL变量的命名约定。以下哪项是首选?

// Style #1
BOOL isNightModeEnabled = NO;

// Style #2
BOOL nightModeEnabled = NO;

谢谢!

3 个答案:

答案 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;

检查文档:Guidelines for Cocoa Naming

答案 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,则转换将按预期工作。