当没有数据要返回时,我通常会返回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。
你对此有何看法,是否有更好的清洁方式?
答案 0 :(得分:3)
是的,即使在C中,使用NULL
或使用0
或nullptr
的C ++也常常这样做。
有什么替代方案?在无效对象实例中返回一些表单?这导致同样多的条件语句调用object.isValid
等等。
答案 1 :(得分:2)
当对象返回nil时,OOP纯粹主义者会想到“Null对象模式”。在像JAVA这样的语言中使用null对象引发异常可能有意义,但即使在那里它也会产生比它解决的问题更多的问题。
在目标c中返回nil是你应该做的,因为如果你知道你在做什么就可以安全地使用甚至nil对象(例如在nil对象上调用[obj方法]是安全的)。