返回null是一个好主意吗?

时间:2012-07-29 17:55:41

标签: java scope

  

可能重复:
  Is returning null bad design?

假设我有一个提示,要求用户输入内容。如果用户与我的规范不匹配,else块将返回null。这是不好的做法吗?如果是这样,我怎么能在if / else块的范围内重复提示?


    if( foo.equalsIgnoreCase( "y" ) ) {
      return bar[x][y];
    }
    else if( foo.equalsIgnoreCase( "n" ) ) {
      return bar[x++][y];
    }
    else {
      return null;
    }

3 个答案:

答案 0 :(得分:1)

null是用于此目的的良好值。这不是一个坏习惯。您需要使用某些内容,而null具有“未定义”的语义。

你的另一个选择是返回用户输入的内容,然后测试“如果它不是'y'或者它不是'n'然后再问”,但实际上,更复杂的是只测试类似!value。< / p>

如果用户未在javadocs中输入'y'或'n',请务必记录您的方法“将返回null。

答案 1 :(得分:1)

null作为返回值肯定不是不良做法。在您的情况下,它是否是正确的选择取决于方法和类接口的其余部分。

答案 2 :(得分:-1)

我认为定义代表第3个选项的常量会更好。

您的源代码将更易于阅读。

如果你想将它设置为null那很好,但我建议不要这样做,因为这可能会让你在以后遇到NullPointerException问题的可能性。

出于这个原因,我考虑在许多情况下退回null糟糕的做法。

您可以在此处详细了解:https://stackoverflow.com/a/1274822/383414(有人将此问题标记为可能重复)