Estoy trabajando en un proyecto que trata con dispositivos físicos, y me ha confundido cómo nombrar correctamente algunas clases en este proyecto.
Teniendo en cuenta que los dispositivos reales (sensores y receptores) son una cosa, y su representación en el software es otra, estoy pensando en nombrar algunas clases con el patrón de nombre de sufijo "Info".
Por ejemplo, mientras que a Sensor
sería una clase para representar el sensor real (cuando realmente está conectado a algún dispositivo en funcionamiento), SensorInfo
se usaría para representar solo las características de dicho sensor. Por ejemplo, al guardar el archivo, serializaría SensorInfo
a en el encabezado del archivo, en lugar de serializar a Sensor
, lo que no tendría sentido.
Pero ahora estoy confundido, porque hay un término medio en el ciclo de vida de los objetos en el que no puedo decidir si debo usar uno u otro, o cómo obtener uno de otro, o incluso si ambas variantes deberían colapsarse en una sola clase.
Además, la Employee
clase de ejemplo demasiado común obviamente es solo una representación de la persona real, pero nadie sugeriría nombrar la clase EmployeeInfo
, hasta donde yo sé.
El lenguaje con el que estoy trabajando es .NET, y este patrón de nombres parece ser común en todo el marco, por ejemplo con estas clases:
Directory
yDirectoryInfo
clases;File
yFileInfo
clases;ConnectionInfo
clase (sinConnection
clase correspondiente );DeviceInfo
clase (sinDevice
clase correspondiente );
Entonces mi pregunta es: ¿hay una razón común sobre el uso de este patrón de nombres? ¿Hay casos en los que tiene sentido tener pares de nombres ( Thing
y ThingInfo
) y otros casos en los que solo debería existir la ThingInfo
clase, o la Thing
clase, sin su contraparte?
Foo
, es posible que tenga una clase de utilidad no instanciable Foos
. Cuando se trata de nombrar, lo importante es la coherencia dentro de la API, e idealmente entre las API de la plataforma.
Employee
docenas encuentran ejemplos, ya sea en línea o en libros clásicos, aunque todavía no los he visto EmployeeInfo
(quizás porque un empleado es un ser vivo, no una construcción técnica como una conexión o un archivo). Pero, de acuerdo, si la clase EmployeeInfo
fuera propuesta en un proyecto, creo que podría ser útil.
Info
sufijo distingue unastatic
clase que contiene métodos de utilidad de su contraparte con estado. No es una "mejor práctica" como tal; es solo una forma en que el equipo .NET ideó para resolver un problema en particular. Podrían haber encontrado fácilmenteFileUtility
yFile
, pero,File.DoSomething()
yFileInfo.FileName
parecen leer mejor.