2013-03-05 52 views
2

如果一個類中:我應該經常檢查返回值來回回的東西是空

Class A 
    public List<string> getValues 

如果我要調用的方法,我就應該總是檢查返回值是空?雖然我不認爲它可能是空的(應該是一個空的列表)。 即

Class B 
    public void GetSomething 
     foreach (var thing in A.getValues) 
      //do something.... 

Class B 
    public void GetSomething 
     var things = A.getValues; 
     if (things != null) 
     foreach (var thing in things) 
      //then doing something.... 

之所以問這個問題是,當我寫單元測試,我在課堂上提出的方法的返回空值而不是空單的,但是我不知道真正的生活,如果它發生的話,因爲如果它可能是空的,那麼檢查總是好的,而不是嘗試捕捉異常,哪一個更合適?

回答

6

總之,不,你不應該總是檢查。您所使用的方法的規範應始終根據您期望的可能結果的語義來明確。因此,例如,如果您希望getValues在沒有值的情況下返回空列表,並且由於錯誤地編寫了它,所以它會返回空對象,那麼NullPointerException是完全理智的事情發生。它警告你,你弄亂了你的方法的規範或者它的實現。 另一方面,getValues也可能返回空對象,因爲某些條件未被滿足。在這種情況下,你應該檢查,因爲它實際上意味着的東西。

0

如果你已經讓你的方法返回null,那麼你必須在做任何操作之前總是檢查null。

中,如果你不檢查空和A.GetValues你的情況正好是空的話,會拋出異常

相關問題