【发布时间】:2017-01-31 13:16:59
【问题描述】:
假设我重新实现了一种在字符串中查找字符串位置的方法。所以我要么得到一个整数的位置,要么得到一个像-1这样的“幻数”。我在很多编程语言中都看到了这种模式,其中一些返回像 null 这样的值,一些返回一些随机的“超出范围”值,比如 -`,还有一些完全抛出错误。
在这方面是否有“最佳实践”,或者至少在我不知道的其他编程语言中更明确一些?
【问题讨论】:
假设我重新实现了一种在字符串中查找字符串位置的方法。所以我要么得到一个整数的位置,要么得到一个像-1这样的“幻数”。我在很多编程语言中都看到了这种模式,其中一些返回像 null 这样的值,一些返回一些随机的“超出范围”值,比如 -`,还有一些完全抛出错误。
在这方面是否有“最佳实践”,或者至少在我不知道的其他编程语言中更明确一些?
【问题讨论】:
这并不像你想象的那样与语言无关,它在很大程度上取决于语言和函数的确切用途。几乎有三种不同的方法:
现在:
function (result, err) 这样的回调变得部分惯用了。对于其他语言,这种方法可能根本不适合。哪个最适合所讨论的语言,具体功能需要单独决定。目标需要在有意义(“未找到字符串”可能不是一个异常)和易于编写简单而正确的代码之间权衡。
【讨论】:
false 或一个虚假值,如果你愿意,你可以平等对待,或者在必要时可以更详细地区分(经典示例strpos(...) === false)。当有效的返回值与错误值在某种程度上无法区分时,这会成为非常的问题。出于这个原因,较新的语言选择异常/单独的错误标志。