Javaでは、慣例により、ブール型フィールドのゲッターとセッターはisField()
とsetField()
になります。これは、active
、visible
、closed
などの形容詞であるフィールド名で完全に機能します。
しかし、haveChildren
のように動詞の意味を持つフィールドに名前を付けるにはどうすればよいですか?動詞に「_ing」を追加します(havingChildren
)、 多分?
明確にするために、メソッド名(getterとsetter)はIDEによって自動生成されるため、制御できません。 IDEがそのためのゲッターを生成するとき、それは理にかなっています。たとえば、hasChildren
は完璧なフィールド名ですが、 IDE isHasChildren
になるフィールドのゲッターを生成します。これを解決するにはどうすればよいですか?
短い答え:
長い答え:
haveChildren()
はhasChildren()
という名前にする必要があります。
また、hasChildren()
がブール型クラスメンバーのゲッターであるとは限りません。このようなメソッドは、タイプCollection
のメンバーが空かどうかを調べると思います。
デフォルト名an IDE生成されたゲッターとセッターに与えられるものは、根拠のある法則ではありません。
別のポイント:インターフェースには、まだ実装されていないメソッドの名前があります。
メソッド名が内部実装を反映するために推測された場合、誰かがどのようにしてインターフェースを設計できるでしょうか?インターフェースには実装がなく、実装者が内部で何をするかを事前に知っていません。
たとえば、JavaのIterator
インターフェースを見てみましょう。
Iterator
を実装すると、next
という名前のブール型メンバーがあったとしても、hasNext()
をisNext()
またはisHavingNext()
。これは実装の詳細です。実際、私はIterator
を実装しており、クラスにnext
という名前のリストがある(ブール値ではない)タイプのメンバーを持っています。次にhasNext()
は_next!=null
_を返します。
また、これを見てください:
_class patient {
private boolean Pulse;
private boolean breaths:
public boolean isDead(){ return (!Pulse & !breaths);}
}
_
isDead()
は通常のゲッターではないことに注意してください。
IDEの生産性ツールを自分たちのものにする。
フィールド名をparent
に変更して、ゲッターがisParent
になり、セッターがsetParent
になるようにすることをお勧めします。
変数名にchildPresent
を、ゲッターとセッターにisChildPresent
とsetChildPresent
を試すこともできます。
動詞の前にdoes
を置くことができます。あなたが提供したあなたの例ではdoesHaveChildren
のように。あるいは、コンテキストに応じてshouldHaveChildren
を使用することもできます。
質問は完全に合理的です。自動生成されたメソッドの名前を変更するだけでは不十分な場合があります。例:JSF管理対象Beanは、_boolean xyz
_プロパティのゲッターメソッドとしてisXyz()
を持っていることが期待されます。
フィールド名をparent
に変更し、メソッド名としてisParent
を使用することを提案するBlackPantherに同意します。情報非表示の原則によれば、ゲッターメソッドとセッターメソッドの可読性は属性の可読性よりも重要です。