0

可能重复:
返回 null 错误设计吗?

假设我有一个提示要求用户输入一些东西。如果用户不符合我的规范,则该else块返回null. 这是不好的做法吗?if如果是这样,我怎么能在/else块的范围内重复提示?

    如果(foo.equalsIgnoreCase(“y”)){
      返回条[x][y];
    }
    否则如果(foo.equalsIgnoreCase(“n”)){
      返回条[x++][y];
    }
    别的 {
      返回空值;
    }

4

3 回答 3

1

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

于 2012-07-29T18:00:13.010 回答
1

null是用于此目的的一个很好的价值。这不是一个坏习惯。您需要使用something,并且null具有“未定义”语义。

您的另一个选择是返回用户输入的内容,然后测试“如果它不是'y'或它不是'n'然后再问一次”,但实际上,这比只测试像!value这样的东西更复杂。

只需确保在 javadocs 中记录您的方法“如果用户未输入 'y' 或 'n',将返回 null”。

于 2012-07-29T17:58:00.907 回答
-1

我相信最好定义一个代表第三个选项的常数。

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

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

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

您可以在此处阅读有关此内容的更多信息:https ://stackoverflow.com/a/1274822/383414 (有人将此问题标记为可能重复)

于 2012-07-29T18:00:14.883 回答