私は物理デバイスを扱うプロジェクトに取り組んでおり、このプロジェクトのいくつかのクラスに適切な名前を付ける方法として混乱しています。
実際のデバイス(センサーとレシーバー)を考慮することと、ソフトウェアでそれらを表現することは別のことであるため、「Info」という接尾辞の名前パターンでクラスに名前を付けることを考えています。
たとえば、a Sensor
は実際のセンサーを表すクラスですが(実際に動作するデバイスに実際に接続されている場合)、SensorInfo
そのようなセンサーの特性のみを表すために使用されます。たとえば、ファイルの保存時に、をシリアル化するのではSensorInfo
なく、ファイルヘッダーにをシリアル化しますSensor
。これは意味がありません。
しかし、今私は混乱しています。なぜなら、オブジェクトのライフサイクルには、どちらを使用するべきか、どのように別のものを取得するか、または両方のバリアントを実際に1つのクラスのみに折りたたむかどうかを判断できない中間点があるためです。
また、あまりにも一般的なEmployee
クラスの例は、明らかに実在の人物の表現にすぎませんがEmployeeInfo
、私の知る限り、クラスに名前を付けることを提案する人はいません。
私が使用している言語は.NETです。この命名パターンは、これらのクラスの例として、フレームワーク全体で共通しているようです。
Directory
およびDirectoryInfo
クラス;File
およびFileInfo
クラス;ConnectionInfo
クラス(対応するConnection
クラスなし);DeviceInfo
クラス(対応するDevice
クラスなし);
だから私の質問は次のとおりです。この命名パターンを使用することについて共通の根拠がありますか?名前のペア(Thing
とThingInfo
)を使用するのが理にかなっている場合ThingInfo
や、Thing
クラスが存在しない、またはクラスが存在しない他の場合がありますか?
Foo
、インスタンス化できないユーティリティクラスがありFoos
ます。ネーミングに関しては、重要なことはAPI内の一貫性であり、理想的にはプラットフォーム上のAPI全体です。
Employee
例はオンラインまたは古典的な本で数十人に発見されていますが、私はまだ見てEmployeeInfo
いません(おそらく従業員は生きているからです接続やファイルなどの技術的な構成要素)。しかし、EmployeeInfo
プロジェクトでクラスが提案されることになった場合、それを使用できると思います。
Info
接尾辞は区別static
そのステートフル相手方からのユーティリティメソッドを含むクラスを。それ自体は「ベストプラクティス」ではありません。これは、特定の問題を解決するために.NETチームが考案した方法にすぎません。彼らは同じように簡単に出ている可能性FileUtility
とFile
、しかし、File.DoSomething()
そしてFileInfo.FileName
より良い読みしているようです。