我正在一个处理物理设备的项目中工作,而在如何正确命名该项目中的某些类方面一直感到困惑。
考虑到实际的设备(传感器和接收器)是一回事,而它们在软件中的表示是另一回事,我正在考虑使用“ Info”后缀名称模式命名某些类。
例如,虽然a Sensor
是代表实际传感器的类(当它实际上连接到某个工作设备时),但SensorInfo
将仅用于代表此类传感器的特性。例如,保存文件后,我将序列化为SensorInfo
文件头,而不是序列化Sensor
,这甚至都没有道理。
但是现在我很困惑,因为在对象生命周期中存在一个中间立场,我无法决定是否应该使用一种或另一种,或者如何从另一种中获取一种,甚至不能将这两种变体实际上只折叠为一个类。
而且,太普遍的示例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
似乎读更好。