Javaメソッド名が「get」プレフィックスを非常に広範囲に使用するのはなぜですか?少なくとも私のJavaプログラムには、「get」という単語で始まる名前のメソッドがたくさんあります。get-methodsの割合が疑わしいほど高くなっています。インフレのせいで「ゲット」という言葉の意味がなくなってきていると感じ始めています。私のコードではノイズです。
機能/宣言型プログラミングとPL/SQLで使用されている命名規則が異なることに気づきました。メソッド名は、メソッドが返すものを単に示しています。account.getAmount()
またはの代わりに、およびTime.getIsoFormattedDateString(Date date)
を使用account.amount()
しTime.isoFormattedDateString(Date date)
ます。関数の名前はメソッドを評価した結果を表すので、これは私には完全に理にかなっています(とにかくあるべきではない副作用がないと仮定します)。「get」プレフィックスは不要のようです。
「クリーンコード」という本を読み始めたところです。メソッドは1つのことだけを実行する必要があり、そのことは通常、次のいずれかである必要があると書かれています。
- イベントについてオブジェクトに通知します。通常は、イベントをパラメータとして渡します。
- あるオブジェクトについて質問します。通常、メソッド名は自然言語ステートメントを形成し、オブジェクトをパラメーターとして渡し、ブール値を返します。
- 何かをフェッチし、場合によってはルックアップキーまたは変換対象のオブジェクトをパラメータとして渡し、常に目的のオブジェクト/値を返します。
私の質問は3番目のカテゴリーについてです。この種のメソッドには、「get」以外の命名規則がありますか?メソッド名/プレフィックスを選択するときにどのような基準を使用しますか?
次に例を示します。
getDates()
2つのメソッドと。を持つクラスがありgetSpecialDates()
ます。getDates()
プライベート変数の値(日付のコレクションへの参照)を返すだけです。私が理解しているように、これは標準的なゲッターです。getSpecialDates()
異なります; を呼び出しgetDates()
、別のクラスからフィルターをフェッチし、フィルターを適用して、実質的にのサブセットであるものを返しますgetDates()
。
getSpecialDates()メソッドには、、、などの名前computeSpecialDates()
を付けることができます。または、単に名前を付けることもできます。そして、一貫性を保つために、名前をに変更できます。findSpecialDates()
selectSpecialDates()
elicitSpecialDates()
specialDates()
getDates()
dates()
接頭辞が「get」である必要があるメソッドとそうでないメソッドをわざわざ区別するのはなぜですか。また、「get」の代わりの単語をわざわざ見つけるのはなぜですか。