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 Sensorbyłby klasą reprezentującą rzeczywisty czujnik (gdy jest on faktycznie podłączony do jakiegoś działającego urządzenia), SensorInfobyłby użyty do przedstawienia jedynie cech takiego czujnika. Na przykład, po zapisaniu pliku, serializowałbym a SensorInfodo 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 Employeeklasa oczywiście jest po prostu reprezentacją prawdziwej osoby, ale EmployeeInfoo 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:
DirectoryiDirectoryInfoklasy;FileiFileInfoklasy;ConnectionInfoklasa (bez odpowiedniejConnectionklasy);DeviceInfoklasa (bez odpowiedniejDeviceklasy);
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 ( Thingi ThingInfo) oraz inne przypadki, w których powinna istnieć tylko ThingInfoklasa lub Thingklasa, 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.
Employeedziesią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). EmployeeInfoZgadzam się jednak, że jeśli klasa miałaby zostać zaproponowana w projekcie, wierzę, że mogłaby się przydać.

Infosufiks odróżniastaticklasy 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ćFileUtilityiFile, aleFile.DoSomething()iFileInfo.FileNamewydają się czytać lepiej.