1

データベーステーブルに裏打ちされた(Java)オブジェクトがあります。データベースでは、(新しい)列の「N」の値は何かが禁止されていることを意味し、「Y」またはnull(デフォルト)の値は何かが許可されていることを意味します。

私のオブジェクトでは、同じ効果を期待しています。デフォルトforbidden = falseでは、ですが、必要に応じてに設定できtrueます。既存のコードを使用しているので、コンストラクターを変更したくありません。

isAllowed()/setAllowed()ただし、プロパティが使用される方法は可能性が高いです(そして私はより理解しやすいと思います):。したがって、コードを次のように設定しました。

public boolean isAllowed()
{   return !this.forbidden;  }
public void setAllowed(boolean allowed)
{   this.forbidden = ! allowed;  }
  1. 他の誰かif ([!]isAllowed()) {...}がより理解しやすいと if ([!]isForbidden()) {...}思いますか、それとも私は間違った仮定をしていますか?
  2. 私のコードは意味がありますか?(はい、私はそれを適切にコメントしようとしています、それが私が尋ねている理由です。)
  3. 私の主な質問:この種の微調整の慣習的な名前はありますか?公開されたプロパティの反対の値を持つフィールドに裏打ちされたブールプロパティ。

ありがとうございました。

4

2 に答える 2

3

(1)他の誰かが...if ([!]isAllowed()) {...}よりも理解しやすいと思いますか?if ([!]isForbidden()) {...}

はい。ポジティブは通常行く方法です。常にではありませんが、通常は。コードが何かが許可されているかどうかで分岐したい場合を考えてみましょう。

if (something.isAllowed()) {
    // do the thing
}

対。

if (!something.isForbidden()) {
   // do the thing
}

最初のものは、もっと流動的に読みます。(しかし、これは主観的です。)

FWIWだけで、おそらくデータメンバーもallowedではなくとして保持しforbiddenます。したがって、アクセサでそれを反転することはありません。上記の引数は、アクセサーを使用したコードと同じように、フィールドを直接使用するコードに適用されるためです(使用するコードがあると仮定します)。

(2)私のコードは意味がありますか?

ブレーススタイル以外はそうです。:-)(そして、スタイルは単なるスタイルであり、完全にあなた自身の決定です。)

(3)-私の主な質問:この種の微調整の慣習的な名前はありますか?

私はそれを聞いたことがありません、それは本当に十分に一般的ではありません。漠然とファサードやアダプターのようなことをしていると思いますが、それは本当のストレッチです。:-)

于 2012-07-12T14:04:58.733 に答える
2

名前はありません。ブール値を逆にしているだけです。

両方isAllowed/isForbiddenアクセサを提供しませんか?どちらが理にかなっているのかは文脈によって異なりますが、文脈上最も自然なものを使用することを明示的に禁止する理由はありません。

于 2012-07-12T14:05:51.607 に答える