哪种方法首选?假设myInteger 99.99%的时间将具有有效值,并且此方法将被非常快速地调用。
-(BOOL)validDate
{
NSUInteger myInteger = ...//method to obtain value;
if (myInteger != NSNotFound)
return YES;
return NO;
}
-(BOOL)validDate
{
NSUInteger myInteger = ...//method to obtain value;
if (myInteger == NSNotFound)
return NO;
return YES;
}
答案 0 :(得分:6)
首选的是:
- (BOOL)validDate
{
NSUInteger myInteger = ...//method to obtain value;
return (myInteger != NSNotFound);
}
因为它实际上不需要执行分支。
请注意,除非您经常使用此代码,否则差别会小得多:
答案 1 :(得分:1)
就标准而言,这两种形式都不是首选。无论myInteger
的值如何,都会进行比较,因此两种形式在性能方面都是相同的。我唯一要改变的就是方法本身的命名。在命名方法和变量时遵循Apple的Cocoa编码指南将是有利的。根据Apple的指导原则:
如果属性表示为形容词,则格式为:
- (BOOL)isAdjective;
- (void)setAdjective:(BOOL)flag;
在这种情况下,由于validDate
是形容词(它描述了对象的状态),因此您应该在方法名称前加上is
,如- (BOOL)isValidDate
中所示。见Apple's Coding Guidelines for more information。
答案 2 :(得分:0)
如果选择严格按照您给出的两个选项之间的选择,我会选择
-(BOOL)validDate
{
NSUInteger myInteger = ...//method to obtain value;
if (myInteger == NSNotFound)
return NO;
return YES;
}
为了便于阅读。我不喜欢阅读!= NSNotFound
等双重否定。