ゲッターのプレフィックスとして「get」を使用するのが最善ですか?


8

私がブール値(プロパティ)を持っている場合shouldAutoLogin、ゲッターに名前を付けるのが良いのでしょうgetShouldAutoLoginか、それとも単にshouldAutoLogin英語のように読めるようにするのですか?

例:

if(shouldAutoLogin){
    ...
}

または

if(getShouldAutoLogin){
    ...
}

プロパティは「shouldAutoLogin」という名前ですか?一部の言語(jspフレームワークなど)のリフレクションは、裏${foo.something}で翻訳されることを期待していますfoo.getSomething()

それが当たり前のようです。ブール値の場合は、のisFoo()代わりに使用することも一般的ですgetFoo()。あなたの例であろうとisAutoLogin()
ラース

jspからこれらのクラスのいずれかにアクセスする場合は、ほとんどの場合アクセスする必要があります。
ジェイディー2013

@jmoreno I(およびその他)、どちらかといえば、OPは内部表現の選択肢を考えると、(それを話していることは明らかでないが、Javaの言及している間、if()それはそれは、Javaであるとは考えにくい。

7
@MikeBryant命名規則は言語固有です。
CodesInChaos 2013

回答:


9

ゲッターの命名規則は通常、

getAutoLogin() 文字列またはオブジェクトを取得する場合。

isAutoLogin() ブール値。


11
これは、JavaBeansの一部であるjavaの命名規則です。C#の場合、get / set / isのような接頭辞なしでプロパティ名を宣言します。
k3b 2013

@ k3b情報をありがとう。私はJava開発者です。:)しかし、C#の規則についても知っておくとよいでしょう。ありがとう
JNL、2013

2
この質問は、プロパティではなくゲッター/セッターについてです。C#のゲッターとセッターは通常get *またはset *でも始まると思いました(たとえば、stackoverflow.com / questions / 16718772 /…を参照)。
sergut 2013

1
@sergut:True、ただしゲッター/セッターメソッドが高速でべき等である場合、通常はゲッターメソッドとセッターメソッドよりもプロパティを優先します。べき等ではない場合、getおよびsetプレフィックスは誤解を招く可能性があります。高速でない場合は、getおよびsetプレフィックスを、コストがあることをより明確にするプレフィックスに置き換える必要があります(たとえば、「getFrob」の代わりに「calculateFrob」を使用します)。
ブライアン

@ブライアン私はもう少し明確にするために探していました。ゲッターとセッターを見る方法は、プライベートデータを取得してデータを設定することだけでした。以前のコメントでcalculateFrob()の例を示したとき、それはプライベートデータに対して実行される演算/計算に似ています。その計算は一時的である可能性があり、プライベートデータを設定する必要がない場合があります。私がここで強調しようとしていることを理解していただければ幸いです。
JNL 2013

3

従来、ゲッターには値の前に、getまたはis値としてプレフィックスが付けられています。これは、Javaスタイルガイドでよく言及されています。たとえば、Javaプログラミングスタイルガイド(これはほんの一例です)。

このようなメソッド名の規則は、リフレクションを使用したり、特定のスタイルのコードを期待するツールで時々適用されます。たとえば、Javaでも(JSPの式言語ですが)、jspのコンパイル時に${foo.bar}呼び出しfoo.getBar()に変換されます。getValue()それだけで大会以上になるように、このように強制されます。

前述のように、上記の例はJavaからのものです。これは Javaの。他の言語には他にも注意すべき規則があり、おそらく従う必要があります。一部の言語はプロパティを使用します(リクエストに応じてコピーする、読み取り専用など、他のきちんとした機能を使用できます)。

特定の言語の選択に合わせてスタイルガイドを調べます。他のコーダーがあなたのコードを読んでいるとき、あなたの個人的なスタイルを理解しようとせずにより早くコードに入ることができるように、可能な限りそれらをフォローすることはおそらく良い考えです。


2

読みやすい方法でメソッドに名前を付けると、利点があります。名前からメソッドの意図と性質を簡単に導き出せるように名前を付ける方法(「ゲッターにはプレフィックスget、ブール述語があるis」)にも利点があります。

バランスをとるのはあなた次第ですが、大規模なプロジェクトでは、一貫性のメリットは通常、偶発的な賢さのメリットを上回ります。

メソッドの名前を変更して、名前を読みやすく、規則に準拠するようにすることは、毎日のよい練習です。あなたの特定のケースでは、isAutoLoginEnabledまたはのようなものを検討しますgetAutoLoginFlag

OTOHあなたには、すべてがのパターンに従うことができる概念的に類似した方法がたくさんありshouldDoSomethingます。元の名前でもかまいません。


私はゲッターに追加された「有効」を気に入っています。これにより、見やすさが大幅に向上します
マイクブライアント

1

私は常に、コードは可能な限り人間が読めるようにすべきだと思っています。コードの意図を明確に定義するのに役立ちます。あなたのケースでは、ブール値のプラスとマイナスの両方の使用法と、それが読みやすさとロジックの意図にどのように影響するかを考えてください。

if(!shouldAutoLogin)
{
     ....
}

if(!getShouldAutoLogin)
{
    ....
}

これは、コードが何をしようとしているのかという意図に、より明確な意味を与えますか?

他の人が示唆したように、変数の名前を

isShouldAutoLogin

または類似


0

私は書くことが多いgetAutoLogin私はに方法たいときreturnなどのデータ型、intまたはString。私はそれはだかどうかを確認したい場合は、trueまたはfalseboolean)、私は単純に入れ替えるgetis、このような:getAutoLogin> isAutoLogin。どの言語にも命名規則があると思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.