如果在一个 A 类中:
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....
问这个问题的原因是我在写单元测试的时候让A类的方法返回null而不是空列表,但是我不知道在现实生活中是否会发生这种情况,因为如果它可以为null那么它检查而不是 try catch 异常总是好的,哪个更合适?
最佳答案
简而言之,不,您不应该总是过牌。您使用的方法的规范应该始终清楚地说明您期望的可能结果的语义是什么。因此,例如,如果您希望 getValues 在没有值时返回一个空列表,并且错误地将其编写为返回一个 null 对象,那么 NullPointerException 是一个非常理智的事情。这是警告你,你搞砸了你的方法的规范或它的实现。 另一方面,也可能是 getValues 返回空对象,因为未满足某些条件。在那种情况下,您应该检查一下,因为它实际上意味着某些东西。
关于c# - 我是否应该始终检查某些东西的返回值是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15222573/