厄介な、未解決の質問ですが、それは私がいつも反対している問題です:
保守と操作が簡単なソフトウェアは、適切に設計されたソフトウェアです。設計を直観的にしようとすると、次の開発者がコンポーネントの機能を推測できるような方法でコンポーネントに名前を付けます。これが、クラスに「Type1」、「Type2」などの名前を付けない理由です。
実際の概念(顧客など)をモデル化する場合、これは一般に、モデル化される実際の概念に基づいて型に名前を付けるのと同じくらい簡単です。しかし、よりシステム指向の抽象的なものを構築する場合、読みやすく、簡単に消化できる名前を使い果たすことは非常に簡単です。
(私にとっては)コンポーネントの動作を説明する基本型またはインターフェイスを使用して、型のファミリに名前を付けようとすると悪化します。これは当然、派生型ごとに実装のフレーバー(IDataConnection
およびSqlConnection
.NET Frameworkなど)を記述しようとしますが、「リフレクションによる動作と特定の属性セットの検索」のような複雑なものをどのように表現しますか?
次に、やろうとしていることを説明していると思われるタイプの名前を最終的に選択したら、同僚は「WTFはDomainSecurityMetadataProvider
実際にこれを行うのですか?」と尋ねます。
コンポーネントの意味のある名前を選択するための良いテクニックはありますか、または混乱した名前を取得せずにコンポーネントのファミリーを構築する方法はありますか?
名前に適用できる簡単なテストはありますか?