如果评估,则更喜欢

时间:2013-10-21 14:13:30

标签: objective-c

哪种方法首选?假设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;
}

3 个答案:

答案 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等双重否定。