6

既存のクラスの動作を拡張する新しいクラスの名前が必要な場合、通常、その名前を思いつくのに苦労します。

たとえば、クラス MyClass がある場合、新しいクラスには MyClassAdapter、MyClassCalculator、MyClassDispatcher、MyClassParser などの名前を付けることができます。

もちろん、この新しい名前はクラスの動作を表す必要があり、理想的にはそれが使用される設計パターン (Adapter、Decorator、Factory など) と同じである必要があります。しかし、私たちはデザインパターンを使いすぎないので、これが常に解決策であるとは限りません:)

予想される動作の簡単な説明を含む、クラスの動作を表すために使用できる辞書または一般的な単語のリストを知っていますか? いくつかの例: レプリケーター、シャドウ、トークン、アクセプター、ワーカー、マッパー、ドライバー、バケット、ソケット、バリデーター、ラッパー、パーサー、ベリファイアーなど

このリストは、問題のドメインをよりよく理解するためのメタファーのチート シートとして見ることもできます。

4

2 に答える 2

2

名前にデザイン パターンを使用しないことをお勧めします。MyClass という名前から始めて、MyClassAdapter、MyClassCalculator、MyClassDispatcher、MyClassParser などに拡張しました。

しかし、これらがクラスであり、あなたのものであることを知っているので、Adapter、Calculator、Dispatcher、Parser ではないでしょうか。

しかし、アダプターは普遍的にそれが言うことをしますか? 電卓は絶対に何かを計算しますか、それとも特定の仕事がありますか?

適切な名前は、WindowToCommProtocol (適応するものの名​​前)、Payroll (計算は 1 つのタスクにすぎません)、UICentral (私にはディスパッチャーのように聞こえます) などです。計算機とパーサーは、通常、ジョブが完了すると状態を保持するべきではありません。私には、クラスではなく関数のように聞こえます。

于 2010-05-02T20:32:54.480 に答える
0

名前からクラスの振る舞いを反映しようとする (または、示したり、示唆したり、意味したり、暗示したり) しようとするのはかなり奇妙だと思います。確かに、クラスの動作はそのメソッドによって定義されていますか?

また、私の辞書使用するには、私の世界に対する考え方に同意する必要があると思います。私たちが同じ問題領域で働いていたとしても (そうではないに違いありませんが)、これを行うのは簡単ではないと思います。

したがって、私はあなたがほとんど自分自身に提案していることを実行することをお勧めします: 問題領域の用語から独自の辞書を導き出します。その演習は、ドメインを理解するのに役立ちます。

最後に、辞書ではなくシソーラスに手を伸ばすほうがよいかもしれません。

于 2010-04-25T16:12:12.213 に答える