可能重复:
返回 null 错误设计吗?
假设我有一个提示要求用户输入一些东西。如果用户不符合我的规范,则该else
块返回null
. 这是不好的做法吗?if
如果是这样,我怎么能在/else
块的范围内重复提示?
如果(foo.equalsIgnoreCase(“y”)){ 返回条[x][y]; } 否则如果(foo.equalsIgnoreCase(“n”)){ 返回条[x++][y]; } 别的 { 返回空值; }
可能重复:
返回 null 错误设计吗?
假设我有一个提示要求用户输入一些东西。如果用户不符合我的规范,则该else
块返回null
. 这是不好的做法吗?if
如果是这样,我怎么能在/else
块的范围内重复提示?
如果(foo.equalsIgnoreCase(“y”)){ 返回条[x][y]; } 否则如果(foo.equalsIgnoreCase(“n”)){ 返回条[x++][y]; } 别的 { 返回空值; }
null
作为返回值肯定是不错的做法。在您的情况下它是否是正确的选择取决于方法和类接口的其余部分。
null
是用于此目的的一个很好的价值。这不是一个坏习惯。您需要使用something,并且null
具有“未定义”语义。
您的另一个选择是返回用户输入的内容,然后测试“如果它不是'y'或它不是'n'然后再问一次”,但实际上,这比只测试像!value这样的东西更复杂。
只需确保在 javadocs 中记录您的方法“如果用户未输入 'y' 或 'n',将返回 null”。
我相信最好定义一个代表第三个选项的常数。
您的源代码将更易于阅读。
如果您想将其设置为null
这很好,但我建议您不要这样做,因为这会让您在NullPointerException
以后遇到问题的可能性。
出于这个原因,我考虑null
在许多情况下返回糟糕的做法。
您可以在此处阅读有关此内容的更多信息:https ://stackoverflow.com/a/1274822/383414 (有人将此问题标记为可能重复)