3

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

// Style #1
BOOL isNightModeEnabled = NO;

// Style #2
BOOL nightModeEnabled = NO;

谢谢!

4

3 回答 3

2

只是想多了一点。

Apple 自己的 Cocoa 方法不会BOOL为用作参数的变量添加前缀:

... whenHighlighted:(BOOL)highlighted
... animated:(BOOL)animated

这同样适用于 Xcode 的 setter 自动完成功能。因此,似乎给局部变量加上前缀is并不是一个好主意,因为最终会得到一些以前缀为前缀的变量,is而另一些则不是。因此 using是一个很好的 gettersis命名约定,而不是局部变量。

于 2013-03-30T15:18:23.327 回答
1

风格 2 不错。它使属性和 KVO 样式的名称更好读:

-(void)setNightModeEnabled;
-(BOOL)nightModeEnabled;

或者

@property (assign, nonatomic, getter=isNightModeEnabled) BOOL nightModeEnabled;

检查文档:可可命名指南

于 2013-03-30T14:56:08.503 回答
0

我个人的偏好是:

bool isNightModeEnabled = false;

它读起来更像英语,把“是”放进去。

我总是优先使用 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,则强制转换将按预期工作。

于 2013-04-01T09:08:38.237 回答