何时使用哨兵值?

时间:2011-08-19 12:59:06

标签: language-agnostic sentinel

我最近不得不使用GPS位置API,其中每个位置对象都包含两个属性altitudeverticalAccuracy。否定verticalAccuracy表示altitude无效,而通常较小但正值verticalAccuracy实际上意味着altitude更精确(因为它是垂直的)它可能会被关闭的距离 - 我将讨论为什么这个度量在其他时间被称为verticalAccuracy而不是verticalInaccuracy的原因。

这让我想到:什么时候使用像这样的API这样的标记值是个好主意,什么时候更好地明确地创建一个单独的hasValidAltitude属性?还有其他选择吗?

1 个答案:

答案 0 :(得分:1)

有时候,哨兵的答案实际上是不可能的;也许函数的范围与codomain(范围)一致。这不是高海拔的情况,除非您允许负高度(可能在未来,将有水下城市)。例如,也许我们在谈论线之间的交集(不是一个很好的例子,因为浮点有一些内置的标记,如+ INF和NaN)或精确的整数商(没有舍入,这不能保证存在... 7和3,例如...这里,除法后的余数可以被视为哨兵或“存在精确整数商”属性。更一般地说,任何可靠的哨兵都可以轻易地用于构建基于属性的机制。

基于此,我建议尽可能避免哨兵,这是有道理的。我的理由是它们是模块的内部实现细节,应该封装在信息隐藏接口之后。