5

最近、HasValue 関数を内部 JavaScript ライブラリに追加しました。

function HasValue(item) {
    return (item !== undefined && item !== null);
}

A 同僚との会話中に、基本的に単に逆になる別の関数も追加するというアイデアを思いつきました: おそらく HasNoValue や IsNothing を実行することになった場合:

function HasNoValue(item) {
    return (item === undefined || item === null);
}
function HasValue(item) {
    return !HasNoValue(item);
}

ただし、両方のほうが読みやすいか、HasValue の方が読みやすいかはわかりません。どちらがより読みやすい/好ましいですか?

A:

if (HasValue(x) && !HasValue(y))

B:

if (HasValue(x) && HasNoValue(y))
4

7 に答える 7

20

私はBよりもAの方が断然好きです。は、すべての人が理解する必要があるプログラミング イディオムです。

于 2009-04-23T15:56:33.593 に答える
12

!HasValue(y)HasNoValue(y)が の入力範囲全体にわたって論理的に同等であることが保証されている場合y、私は を大いに好むでしょう!HasValue(y)

必然的HasNoValue(y)誰かが!HasNoValue(y).

于 2009-04-23T16:03:48.663 に答える
8

私は圧倒的に「A」に投票しています。

ブール値の戻り関数ごとにこれを行うという追加のメンテナンス負担は、よく理解され、非常に読みやすい「!」と比較して価値がありません。実際、「B」は見落としやすいため、実際には読みにくいと思います。名前の真ん中にある「いいえ」。

于 2009-04-23T15:57:44.543 に答える
2

私はこの意見についてはかなり独りになることを知っています。共同プロジェクトでこの選択に直面した場合、私は間違いなくAに行きます。なぜなら、それが正しいことであることは明らかだからです。しかし、私は言わなければなりません.私はオプション B の冗長性を高く評価しています。たとえそれが私たちの最愛の感嘆符のようにありふれたものであっても、言葉は記号よりもはるかに読みやすく、理解しやすいものです。

特に、IDE のインテリセンスが以前よりも大幅に向上した今、私は通常、すべてのネーミングで以前よりもはるかに冗長性を選択する傾向があります。10 分の 9 の確率で、読みやすさがわずかなパフォーマンスの違いに勝ります。

于 2009-04-23T16:08:19.713 に答える
1

コードの行数を減らし、関数がブール値を返すため、メソッド A を使用することをお勧めします。読みやすさを心配する必要がある場合は、いつでも試すことができます。

if ( HasValue(x) && !(HasValue(y)) )
于 2009-04-23T15:57:26.353 に答える
0

オプションAの方が明確で、それが何を意味するかを正確に知っていると思います。

于 2009-04-23T15:57:26.900 に答える
0

私はオプションAに固執しますが、それは私だけです.

于 2009-04-23T15:59:09.110 に答える