質問: 命名クラス - すべてを "<whatever>マネージャー"と呼ぶのを避ける方法は? 昔、私はオブジェクトの命名に関する「正しい」トラックに私を置く記事(私はブログ記事だと思う)を読んだことがあります。たとえば、私のアプリケーションが(典型的なビジネスアプリケーションとして)ユーザー、会社、および住所を処理していた場合、user、company、およびaddressドメインクラスがあります。 usermanager、companymanager、およびaddressmanagerがポップアップ表示され、それらが処理されます。それで、あなたはそれらのusermanager、companymanager、そしてaddressmanagerが何をしているのかわかりますか?いいえ、managerはドメインオブジェクトを使ってできることに当てはまる非常に一般的な用語です。私が読んだ記事では、非常に具体的な名前を使用することをお勧めしました。それがc++アプリケーションであり、usermanagerの仕事がユーザーを割り当ててヒープから解放することであれば、ユーザーを管理するのではなく、彼らの誕生と死を守ることになります。うーん、多分これをusershepherdと呼ぶことができます。あるいはusermanagerの仕事は、各userオブジェクトのデータを調べてデータに暗号化することです。それならuserrecordsclerkがあります。このアイデアが私にはまったので、私はそれを適用しようとします。そして、この単純なアイデアを驚くほど難しいと思います。私はクラスが何をするのか、そして私が書くクラスが正確にoneすることを説明することができます。その説明から名前に行き過ぎるのは、一種の名前のカタログ、概念を名前にマップする語彙です。最終的に私は私の心の中でパターンカタログのようなものが欲しいのです(しばしばデザインパターンは簡単にオブジェクト名を提供します、例えばfactory) factory - 他のオブジェクトを作成します(デザインパターンから取った命名) シェパード - シェパードはオブジェクトの存続期間、それらの作成とシャットダウンを処理します。 synchronizer - 2つ以上のオブジェクト(またはオブジェクト階層)間でデータをコピーします nanny - 作成後にオブジェクトが「使用可能」な状態になるのを助けます - 例えば他のオブジェクトへの配線によって など. それで、あなたはどのようにその問題に対処しますか?あなたは固定語彙を持っていますか、あなたはその場で新しい名前を発明しますか、あるいは物事を命名することはそれほど重要ではないか間違っていますか?p.s .:私は問題について議論している記事やブログへのリンクにも興味があります。最初に、私がそれについて考えさせた最初の記事はここにあります: 「マネージャ」なしでjavaクラスに名前を付ける 更新:回答のまとめこれまでの間に、この質問から私が学んだことを少し要約します。 新しい隠喩を作らないようにしてください。(nanny) 他のフレームワークが何をするのか見てください。 このトピックに関するさらなる記事/本: 定期的にクラスの前に付けたり付けたりする名前は何ですか? クラスの命名に最も適した方法は何ですか? 本: デザインパターン:再利用可能なオブジェクト指向ソフトウェア(ハードカバー)の要素 本: エンタープライズアプリケーションアーキテクチャのパターン(ハードカバー) book: implementation patterns(ペーパーバック) そして私が答えから(主観的に!)集めた名前の接頭辞/接尾辞の現在のリスト: コーディネーター ビルダー 作家 リーダー ハンドラ 容器 プロトコル ターゲット コンバータ コントローラ 見る 工場 エンティティ バケツ そして道のための良いヒント: 命名麻痺をしないでください。はい、名前は非常に重要ですが、膨大な時間を無駄にするほど重要ではありません。あなたが10分で良い名前を思い付くことができないならば、上に進んでください。
回答: c#に特化して、 "フレームワーク設計のガイドライン:再利用可能な.netライブラリの規約、慣用句、パターン" /命名の論理について多くの優れた情報を持っていることがわかりました。ただし、これらのより具体的な単語を見つけることに関しては、シソーラスを使用し、関連する単語を調べて良い単語を見つけようとすることがよくあります。私は開発を進めていくにつれてより良い名前を思いついたり、時にはsuchandsuchmanagerを実際には複数のクラスに分割しなければならないことに気付いて、その非推奨クラスの名前が非公式になるようにします。問題。