0

我最近不得不使用 GPS 位置 API,其中每个位置对象都有两个属性altitudeverticalAccuracy. 负数verticalAccuracy表示altitude无效,而通常较小但正数的值verticalAccuracy实际上意味着altitude更精确(因为它可能偏离垂直距离 - 我将讨论为什么调用此度量verticalAccuracy而不是verticalInaccuracy为了其他时间)。

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

4

1 回答 1

1

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

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

于 2011-08-19T13:24:28.263 回答