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 Sensor
seria uma classe para representar o sensor real (quando está realmente conectado a algum dispositivo em funcionamento), SensorInfo
seria usado para representar apenas as características desse sensor. Por exemplo, ao salvar o arquivo, eu serializaria SensorInfo
a 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 Employee
classe 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:
Directory
eDirectoryInfo
aulas;File
eFileInfo
aulas;ConnectionInfo
classe (semConnection
classe correspondente );DeviceInfo
classe (semDevice
classe 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 ( Thing
e ThingInfo
) e outros casos em que deve existir apenas a ThingInfo
classe ou a Thing
classe 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.
Employee
exemplos 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 EmployeeInfo
fosse proposta em um projeto, acredito que poderia ser útil.
Info
sufixo distingue umastatic
classe 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 aFileUtility
eFile
, masFile.DoSomething()
eFileInfo.FileName
parecem ler melhor.