2014-01-31 27 views
1

當沒有數據要返回時,我通常返回零。 例如返回nil表示沒有數據可以返回是不好的做法嗎?

- (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程序員和麪向對象的純粹)的討論是很容易出錯,或者至少得到了很多條件語句,其中一個必須驗證返回的數據ISN不,無。在適當的情況下,我還傳遞一個NSError參數和param。

你對此有什麼看法,有沒有更好的清潔方法?

+1

Dude Java很奇怪。一些蘋果自己的課程是這樣做的,例如:'NSURL'。它是我們的標準做法。 – Amar

+0

重複:http://stackoverflow.com/questions/1274792/is-returning-null-bad-design和http://stackoverflow.com/questions/1626597/should-functions-return-null-or-an-empty -object – san

+1

nil不爲空 – MdaG

回答

3

是的,即使在C中,也可以使用NULL或C++使用0nullptr

有什麼選擇?返回無效對象實例中的某些表單?這導致只有很多條件語句調用object.isValid等。

+0

「無效對象實例」是建議的替代品,但正如您所說,這也會創建條件語句。 – MdaG

2

當對象返回nil時,OOP純粹主義者記住「空對象模式」。在某些像JAVA這樣的語言中使用空對象會引發異常,但即使在那裏它會產生比解決問題更多的問題也是有意義的。
在目標c返回nil是你應該做的,因爲如果你知道你在做什麼(例如在nil對象上調用[obj方法]是安全的),你甚至可以安全地使用nil對象。