0

给定一个接受参数并返回或基于参数对某些内部规则的遵守的bool验证函数:truefalse

如果参数是null,函数应该:

  • 返回false
  • 返回true
  • 什么都不做,简单地提出一个ArgumentNullException

我倾向于相信最好的做法是提出例外。然而,我很想听听其他人在这个问题上的经验。

鉴于 a 的唯一选择bool,我个人很想 return ,但根据函数使用的上下文,也false可以看到 return 的好处。true例如,一个空字符串可以被解释为空并且可以被认为是有效的。

是否有针对这种特定情况的最佳实践指南?我正在寻找一个指南,就像在Code Complete等书籍中找到的指南一样。

是否总是需要逐案处理?

4

2 回答 2

1

我认为没有一般的最佳实践,它将取决于语义。

接收有意义null吗?如果是这样,返回truefalse基于更有意义的内容,例如,假设通过时isAlphaNumericString(String)返回很可能是荒谬的,但返回可能是有意义的。truenullfalse

但如果接收没有意义null,则 anull标记调用中的问题,引发异常以强制调用者有意义。

于 2014-11-27T20:58:39.613 回答
-1

当我解释您的问题时,您的输入变量空间由变量可以通过null状态增加的每个值确定。例如,在 SQL 中,这对应于某种类型,比如INTEGERand NULL。例如,在 C++ 中,它对应于类似于“未初始化”boost::optional<int>的意思。null

现在,我认为最干净的解决方案是使用null. 这也是上述两个示例都遵循(或至少通常遵循)的选择。例如,如果标量函数(如LENGTH()SQL 中的比较运算符或比较运算符)接受一个NULL参数,它通常也返回NULL.

更在理论上,这实现了从null定义空间中的-子空间到null结果空间中的-子空间的同构(对于补码,即非零空间也是如此)。这样做的好处是您根本不必重新解释您的原始功能。

于 2014-11-27T20:49:50.313 回答