0

多くの場合、新しいクラスを作成するときは、最初に新しいインターフェイスを作成します。インターフェイスのメソッドには、動作させたいとおりに正確に名前を付けます。私の同僚は、これらのメソッド名をより抽象的にすることを好みます。つまり、areConditionsMet() です。その理由は、彼は「実装の詳細」を隠したいからです。

IMO 実装の詳細は、予想される動作とは異なります。誰かがおそらくもっと洞察を与えることができますか?私の目標は、同僚​​と共通点に到達することです。

4

3 に答える 3

1

メソッド名は、メソッドが何を行うかを説明する必要がありますが、どのように行うかは説明しないでください。あなたが与えた例はかなり貧弱なメソッド名ですが、isXGreatherThan1AndLessThan6(). それが何をすべきかについての詳細を知らなくても、それは目前の問題に固有のものであるべきですが、名前自体に影響を与えずに実装を変更できるほど一般的であると言えます。つまり、メソッドの名前は必要ありませんもろくなる。例としてはisTemperatureWithinRange() 、私がチェックしていることを説明していますが、それがどのように達成されたかは説明していません。メソッドのユーザーは、温度が特定の範囲内にあるかどうかが出力に反映されることを確信する必要があります。これが引数として提供されるか、クラスの契約によって定義されるかは重要ではありません。

于 2010-06-22T11:45:40.990 に答える
0

インターフェイス メソッドの名前は、メソッドが機能的な観点から何をすることを提案するかについて、インターフェイスのユーザーに疑いの余地を残さないようにする必要があります。実装がそれに一致する場合は、まあまあです。

更新されたコメントに基づいて:

isModified()hasProperties()の 2 つのメソッドが必要なように思えます。特定の基準が満たされているかどうかの判断は、ドメイン オブジェクトのユーザー (または上位レイヤー) に任せます。

インターフェイスは、リリース後は変更されないという観点で設計する必要もあります。isDomainObjectModifiedAndHasProperties() と言うと、(将来の予期しない実装に関係なく) これがフルフィルメント基準であることを具体的に設定することになります。

于 2010-06-22T11:37:38.863 に答える
0

インターフェイスは、何らかの動作または機能を表す必要があり、それを実現する方法を表す必要はありません。インターフェイスのユーザーは、目標が達成される方法に関心を持つべきではありません。目標が達成されたかどうかを知りたいだけです。

その正確な理由から、実装の問題をメソッドの名前に含めるべきではありません。このメソッドの結果として更新されるテーブルの名前または使用されるテクノロジは、ドメイン オブジェクトのメソッドの名前とは関係ありません。

しかし、あなたの質問から、当面の正確なケースが何であるかを言うのは難しいです.

詳細を提供していただければ、追加のヘルプを提供できるかもしれません。

于 2010-06-22T11:51:27.620 に答える