3

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

3 回答 3

6

首选是:

- (BOOL)validDate
{
    NSUInteger myInteger = ...//method to obtain value;    

    return (myInteger != NSNotFound);
}

因为它实际上不需要执行分支。

请注意,除非您经常运行此代码,否则差异将非常小...

于 2013-10-21T14:15:48.303 回答
1

就标准而言,这两种形式都不是首选。无论 的值如何,都会进行比较myInteger,因此两种形式的性能相同。我唯一要改变的是方法本身的命名。在命名方法和变量时,遵守 Apple 的 Cocoa 编码指南将是有利的。根据 Apple 的指导方针:

如果属性表示为形容词,格式为:

- (BOOL)isAdjective;

- (void)setAdjective:(BOOL)flag;

在这种情况下,因为validDate是一个形容词(它描述了对象的状态),您应该在方法名称前加上is,如- (BOOL)isValidDate。有关详细信息,请参阅Apple 的编码指南

于 2013-10-21T14:50:12.777 回答
0

如果选择严格在您提供的两个选项之间,我会选择

-(BOOL)validDate
{
    NSUInteger myInteger = ...//method to obtain value;    
    if (myInteger == NSNotFound)
        return NO;        
    return YES;
}

为了可读性。我不喜欢阅读像!= NSNotFound.

于 2013-10-21T14:39:24.010 回答