返回nil表示没有数据可以返回是不好的做法吗?

时间:2014-01-31 08:53:26

标签: ios objective-c

当没有数据要返回时,我通常会返回nil。 e.g。

- (MyObject *)myMethod:(MyParam *)param {
    MyObject *object = nil
    if (param ok and there is enough data to calculate on) {
        object = results of some calculations
    }

    return object;
}

但我与一位同事(Java程序员和面向对象纯粹主义者)进行了讨论,他认为这种习惯容易出错,或者至少产生很多条件语句,其中必须验证返回的数据不是零。在适当的地方,我还传递一个NSError参数和param。

你对此有何看法,是否有更好的清洁方式?

2 个答案:

答案 0 :(得分:3)

是的,即使在C中,使用NULL或使用0nullptr的C ++也常常这样做。

有什么替代方案?在无效对象实例中返回一些表单?这导致同样多的条件语句调用object.isValid等等。

答案 1 :(得分:2)

当对象返回nil时,OOP纯粹主义者会想到“Null对象模式”。在像JAVA这样的语言中使用null对象引发异常可能有意义,但即使在那里它也会产生比它解决的问题更多的问题。
在目标c中返回nil是你应该做的,因为如果你知道你在做什么就可以安全地使用甚至nil对象(例如在nil对象上调用[obj方法]是安全的)。