Estou trabalhando em um projeto que lida com dispositivos físicos e estou confuso sobre como nomear corretamente algumas classes neste projeto.
Considerando que os dispositivos reais (sensores e receptores) são uma coisa, e sua representação no software é outra, estou pensando em nomear algumas classes com o padrão de nome de sufixo "Info".
Por exemplo, enquanto a Sensorseria uma classe para representar o sensor real (quando está realmente conectado a algum dispositivo em funcionamento), SensorInfoseria usado para representar apenas as características desse sensor. Por exemplo, ao salvar o arquivo, eu serializaria SensorInfoa no cabeçalho do arquivo, em vez de serializar a Sensor, o que nem faria sentido.
Mas agora estou confuso, porque existe um campo intermediário no ciclo de vida dos objetos em que não consigo decidir se devo usar um ou outro, ou como obter um do outro, ou mesmo se as duas variantes devem realmente ser reduzidas a apenas uma classe.
Além disso, a Employeeclasse de exemplo muito comum obviamente é apenas uma representação da pessoa real, mas ninguém sugeriria o nome da classe EmployeeInfo, tanto quanto eu sei.
A linguagem com a qual estou trabalhando é .NET e esse padrão de nomenclatura parece ser comum em toda a estrutura, por exemplo, com estas classes:
DirectoryeDirectoryInfoaulas;FileeFileInfoaulas;ConnectionInfoclasse (semConnectionclasse correspondente );DeviceInfoclasse (semDeviceclasse correspondente );
Portanto, minha pergunta é: existe uma lógica comum sobre o uso desse padrão de nomenclatura? Existem casos em que faz sentido ter pares de nomes ( Thinge ThingInfo) e outros casos em que deve existir apenas a ThingInfoclasse ou a Thingclasse sem sua contraparte?
Foo, pode ter uma classe de utilitário não instanciada Foos. Quando se trata de nomear, o importante é a consistência na API e, idealmente, nas APIs da plataforma.
Employeeexemplos são encontrados por dezenas, online ou em livros clássicos, enquanto eu ainda não o vi EmployeeInfo(talvez porque um funcionário seja um ser vivo, não uma construção técnica como uma conexão ou um arquivo). Mas, concordou, se a classe EmployeeInfofosse proposta em um projeto, acredito que poderia ser útil.

Infosufixo distingue umastaticclasse que contém métodos utilitários de sua contraparte com estado. Não é uma "melhor prática" como tal; é apenas uma maneira que a equipe do .NET criou para resolver um problema específico. Eles poderiam ter apenas como facilmente chegar aFileUtilityeFile, masFile.DoSomething()eFileInfo.FileNameparecem ler melhor.