Sto lavorando a un progetto che si occupa di dispositivi fisici e sono stato confuso su come nominare correttamente alcune classi in questo progetto.
Considerando che i dispositivi effettivi (sensori e ricevitori) sono una cosa, e la loro rappresentazione nel software è un'altra, sto pensando di nominare alcune classi con il modello di nome del suffisso "Info".
Ad esempio, mentre a Sensor
sarebbe una classe per rappresentare il sensore effettivo (quando è effettivamente collegato a un dispositivo funzionante), SensorInfo
verrebbe utilizzato per rappresentare solo le caratteristiche di tale sensore. Ad esempio, dopo il salvataggio del file, vorrei serializzare un SensorInfo
nell'intestazione del file, anziché serializzare un Sensor
, che non avrebbe nemmeno senso.
Ma ora sono confuso, perché c'è un punto centrale nel ciclo di vita degli oggetti in cui non posso decidere se dovrei usare l'uno o l'altro, o come ottenerne uno l'uno dall'altro, o anche se entrambe le varianti debbano effettivamente essere compresse in una sola classe.
Inoltre, la Employee
classe di esempio fin troppo comune è ovviamente solo una rappresentazione della persona reale, ma nessuno suggerirebbe invece di nominare la classe EmployeeInfo
, per quanto ne so.
Il linguaggio con cui sto lavorando è .NET e questo modello di denominazione sembra essere comune in tutto il framework, ad esempio con queste classi:
Directory
eDirectoryInfo
classi;File
eFileInfo
classi;ConnectionInfo
classe (senzaConnection
classe corrispondente );DeviceInfo
classe (senzaDevice
classe corrispondente );
Quindi la mia domanda è: c'è una logica comune sull'uso di questo modello di denominazione? Ci sono casi in cui ha senso avere coppie di nomi ( Thing
e ThingInfo
) e altri casi in cui dovrebbe esistere solo la ThingInfo
classe, o la Thing
classe, senza la sua controparte?
Foo
, è possibile che sia presente una classe di utilità non istantanea Foos
. Quando si tratta di nominare, l'importante è la coerenza all'interno dell'API e idealmente tra le API sulla piattaforma.
Employee
esempi sono stati trovati dalle dozzine, sia online che nei libri classici, mentre non l'ho ancora visto EmployeeInfo
(forse perché un dipendente è un essere vivente, non un costrutto tecnico come una connessione o un file). Ma, d'accordo, se la classe EmployeeInfo
dovesse essere proposta in un progetto, credo che potrebbe avere il suo uso.
Info
suffisso distingue unastatic
classe contenente metodi di utilità dalla sua controparte stateful. Non è una "best practice" in quanto tale; è solo un modo in cui il team di .NET ha ideato per risolvere un problema particolare. Avrebbero potuto escogitare altrettanto facilmenteFileUtility
eFile
, maFile.DoSomething()
eFileInfo.FileName
sembrano leggere meglio.