0

最近、GPSロケーションAPIを使用する必要がありました。各ロケーションオブジェクトには、特に2つのプロパティaltitudeとがありverticalAccuracyます。負の値はそれが無効であるverticalAccuracyことを意味しaltitudeますが、通常は小さいが正の値はverticalAccuracy実際にはそれaltitudeがより正確であることを意味します(垂直距離がずれている可能性があるため、このメジャーが呼び出される理由については説明しverticalAccuracyませんverticalInaccuracy。いつかね)。

これは私に考えさせられました:このAPIのように番兵の値を使用するのはいつ良い考えであり、いつ明示的に別のhasValidAltitudeプロパティを作成するのが良いでしょうか?他に選択肢はありますか?

4

1 に答える 1

1

時々、歩哨の答えは実際には不可能です。関数の範囲が終域(範囲)と一致している可能性があります。これは、負の高度を許可しない限り、高度には当てはまりません(将来的には、水中都市が存在する可能性があります)。たとえば、線の交点(フローティングポイントには+ INFやNaNなどの組み込みのセンチネルがいくつかあるため、良い例ではありません)や正確な整数の商(丸めなしで、これは保証されません)について話している可能性があります。存在する...7と3、たとえば...ここでは、除算後の余りは、番兵または「正確な整数の商が存在する」プロパティのいずれかと見なすことができます。より一般的には、信頼できるセンチネルを使用して、プロパティベースのメカニズムを簡単に構築できます。

これに基づいて、これが可能で理にかなっている場合は、番兵を避けることをお勧めします。私の推論は、それらはモジュールの内部実装の詳細であり、情報隠蔽インターフェースの背後にカプセル化する必要があるということです。

于 2011-08-19T13:24:28.263 に答える