Kent Beck による実装パターンからいくつかの一節を引用します。
単純なスーパークラス名
「[...] 名前は短くてパンチの効いたものにする必要があります。ただし、名前を正確にするには、いくつかの単語が必要な場合があります。このジレンマから抜け出す方法は、計算に強力なメタファーを選択することです。メタファーを念頭に置いて、単一の単語は、関連付け、接続、および含意の豊富なネットワークをもたらします. たとえば、HotDraw 描画フレームワークでは、描画内のオブジェクトの私の最初の名前は
DrawingObject でした. ウォード・カニンガムは、タイポグラフィのメタファーと共に来ました: a drawing is like印刷され、レイアウトされたページ。ページ上のグラフィック項目は図であるため、クラスはFigureになりました。比喩の文脈では、FigureはDrawingObject
よりも短く、豊かで、正確です。」
修飾サブクラス名
「サブクラスの名前には 2 つの役割があります。サブクラスは、どのようなクラスであり、どのように異なるかを伝える必要があります。[...] 階層のルートにある名前とは異なり、サブクラス名は会話でほとんど使用されません。そのため、簡潔さを犠牲にして表現力を高めることができます [...]
階層のルートとして機能するサブクラスには、独自の単純な名前を付けます。たとえば、HotDrawには、図が選択されたときに図を編集する操作を表すクラスHandleがあります。Figure
を拡張したにもかかわらず、単純にハンドルと呼ばれます。ハンドルのファミリ全体があり、 StretchyHandleやTransparencyHandleなどの名前が最も適切
です。Handleはそれ自体の階層のルートであるため、修飾されたサブクラス名よりも単純なスーパークラス名を使用する価値があります。
サブクラスの命名におけるもう 1 つの欠点は、複数レベルの階層です。[...] 修飾子を直接のスーパークラスにやみくもに追加するのではなく、読者の観点から名前について考えてください。このクラスがどのようなクラスであるかを知るには、どのクラスが必要ですか? そのスーパークラスをサブクラス名のベースとして使用してください。」
インターフェース
インターフェースの命名方法には、インターフェースの考え方に応じて 2 つのスタイルがあります。実装のないクラスとしてのインターフェイスは、クラスであるかのように名前を付ける必要があります (単純なスーパークラス名、修飾されたサブクラス名)。この命名スタイルの問題点の 1 つは、クラスに名前を付ける前に適切な名前が使い果たされることです。Fileと呼ばれるインターフェースには、 ActualFile、ConcreteFile、または (ヤッ!) FileImplなどと呼ばれる実装クラスが必要
です。(接尾辞と省略形の両方)。一般に、具体的なオブジェクトを扱っているのか抽象オブジェクトを扱っているのかを伝えることは重要であり、抽象オブジェクトがインターフェースまたはスーパークラスとして実装されているかどうかはそれほど重要ではありません。インターフェイスとスーパークラスの区別を延期することは、この命名スタイルによって十分にサポートされており、必要になった場合に後で自由に変更することができます。
インターフェイスの使用を隠すよりも、具体的なクラスに名前を付ける方がコミュニケーションにとって重要な場合があります。この場合、インターフェイス名の前に「I」を付けます。インターフェイスがIFileと呼ばれる場合、クラスは単にFileと呼ばれます。
より詳細な議論については、本を購入してください。価値がある!:)