Pracuję w projekcie, który dotyczy urządzeń fizycznych i byłem zdezorientowany, jak prawidłowo nazwać niektóre klasy w tym projekcie.
Biorąc pod uwagę fakt, że rzeczywiste urządzenia (czujniki i odbiorniki) to jedno, a ich reprezentacja w oprogramowaniu jest inna, myślę o nadaniu nazw niektórym klasom za pomocą wzorca nazwy sufiksu „Info”.
Na przykład, podczas gdy a Sensor
byłby klasą reprezentującą rzeczywisty czujnik (gdy jest on faktycznie podłączony do jakiegoś działającego urządzenia), SensorInfo
byłby użyty do przedstawienia jedynie cech takiego czujnika. Na przykład, po zapisaniu pliku, serializowałbym a SensorInfo
do nagłówka pliku, zamiast serializować a Sensor
, co nie miałoby nawet sensu.
Ale teraz jestem zdezorientowany, ponieważ w cyklu życia obiektów istnieje pole środkowe, w którym nie mogę zdecydować, czy mam użyć jednego lub drugiego, jak uzyskać jeden od drugiego, a nawet czy oba warianty powinny być rzeczywiście zwinięte tylko do jednej klasy.
Ponadto, zbyt powszechna przykładowa Employee
klasa oczywiście jest po prostu reprezentacją prawdziwej osoby, ale EmployeeInfo
o ile wiem , nikt nie sugerowałby, aby nazwać klasę .
Językiem, w którym pracuję, jest .NET, a ten schemat nazewnictwa wydaje się być powszechny w całym frameworku, na przykład w przypadku tych klas:
Directory
iDirectoryInfo
klasy;File
iFileInfo
klasy;ConnectionInfo
klasa (bez odpowiedniejConnection
klasy);DeviceInfo
klasa (bez odpowiedniejDevice
klasy);
Więc moje pytanie brzmi: czy istnieje powszechne uzasadnienie używania tego wzorca nazewnictwa? Czy istnieją przypadki, w których sensowne jest posiadanie par nazw ( Thing
i ThingInfo
) oraz inne przypadki, w których powinna istnieć tylko ThingInfo
klasa lub Thing
klasa, bez jej odpowiednika?
Foo
, możesz mieć klasę użyteczności, której nie da się utworzyć Foos
. Jeśli chodzi o nazewnictwo, ważna jest spójność w interfejsie API, a najlepiej w interfejsach API na platformie.
Employee
dziesiątki znajdują przykłady w Internecie lub w klasycznych książkach, których jeszcze nie widziałem EmployeeInfo
(być może dlatego, że pracownik jest żywą istotą, a nie konstrukcja techniczna, taka jak połączenie lub plik). EmployeeInfo
Zgadzam się jednak, że jeśli klasa miałaby zostać zaproponowana w projekcie, wierzę, że mogłaby się przydać.
Info
sufiks odróżniastatic
klasy zawierającej metody narzędzia z jego pełnostanową odpowiednik. Nie jest to „najlepsza praktyka” jako taka; to tylko sposób, w jaki zespół .NET wymyślił rozwiązanie konkretnego problemu. Mogli tak łatwo wymyślićFileUtility
iFile
, aleFile.DoSomething()
iFileInfo.FileName
wydają się czytać lepiej.