我最近不得不使用GPS位置API,其中每个位置对象都包含两个属性altitude
和verticalAccuracy
。否定verticalAccuracy
表示altitude
无效,而通常较小但正值verticalAccuracy
实际上意味着altitude
更精确(因为它是垂直的)它可能会被关闭的距离 - 我将讨论为什么这个度量在其他时间被称为verticalAccuracy
而不是verticalInaccuracy
的原因。
这让我想到:什么时候使用像这样的API这样的标记值是个好主意,什么时候更好地明确地创建一个单独的hasValidAltitude
属性?还有其他选择吗?
答案 0 :(得分:1)
有时候,哨兵的答案实际上是不可能的;也许函数的范围与codomain(范围)一致。这不是高海拔的情况,除非您允许负高度(可能在未来,将有水下城市)。例如,也许我们在谈论线之间的交集(不是一个很好的例子,因为浮点有一些内置的标记,如+ INF和NaN)或精确的整数商(没有舍入,这不能保证存在... 7和3,例如...这里,除法后的余数可以被视为哨兵或“存在精确整数商”属性。更一般地说,任何可靠的哨兵都可以轻易地用于构建基于属性的机制。
基于此,我建议尽可能避免哨兵,这是有道理的。我的理由是它们是模块的内部实现细节,应该封装在信息隐藏接口之后。