Language agnostic 何时使用sentinel值?

Language agnostic 何时使用sentinel值?,language-agnostic,sentinel,Language Agnostic,Sentinel,我最近不得不使用一个GPS定位API,其中每个定位对象都有两个属性高度和垂直精度。负的垂直精度表示高度无效,而通常垂直精度的值较小但为正值实际上意味着高度更精确(因为它是垂直距离,它可能会偏离-我将留下讨论,为什么这个度量被称为垂直精度,而不是垂直精度) 这让我思考:什么时候像这个API那样使用sentinel值是一个好主意?什么时候显式地创建一个单独的Hasvalidalitude属性更好?还有其他选项吗?有时候,sentinel答案实际上是不可能的;也许函数的范围与codomain(范围)一

我最近不得不使用一个GPS定位API,其中每个定位对象都有两个属性
高度
垂直精度
。负的
垂直精度
表示
高度
无效,而通常
垂直精度
的值较小但为正值实际上意味着
高度
更精确(因为它是垂直距离,它可能会偏离-我将留下讨论,为什么这个度量被称为
垂直精度
,而不是
垂直精度


这让我思考:什么时候像这个API那样使用sentinel值是一个好主意?什么时候显式地创建一个单独的
Hasvalidalitude
属性更好?还有其他选项吗?

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


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

是的,我认为死亡谷也有可能。哈,尽管如此。