Ich arbeite in einem Projekt, das sich mit physischen Geräten befasst, und ich war verwirrt, wie ich einige Klassen in diesem Projekt richtig benennen soll.
Angesichts der Tatsache, dass die tatsächlichen Geräte (Sensoren und Empfänger) eine Sache sind und ihre Darstellung in der Software eine andere, denke ich darüber nach, einige Klassen mit dem Suffix-Namensmuster "Info" zu benennen.
Während beispielsweise a Sensoreine Klasse ist, die den tatsächlichen Sensor darstellt (wenn er tatsächlich mit einem Arbeitsgerät verbunden ist), wird SensorInfosie verwendet, um nur die Eigenschaften eines solchen Sensors darzustellen. Zum Beispiel würde ich beim Speichern von Dateien a SensorInfoin den Datei-Header serialisieren, anstatt a zu serialisieren Sensor, was nicht einmal Sinn macht.
Aber jetzt bin ich verwirrt, weil es einen Mittelweg im Lebenszyklus von Objekten gibt, auf dem ich nicht entscheiden kann, ob ich die eine oder andere verwenden oder wie ich eine von einer anderen erhalten soll oder ob beide Varianten tatsächlich nur zu einer Klasse zusammengefasst werden sollen.
Außerdem ist die allzu verbreitete Beispielklasse Employeeoffensichtlich nur eine Darstellung der realen Person, aber meines Wissens würde niemand vorschlagen, die Klasse EmployeeInfostattdessen zu benennen .
Die Sprache, mit der ich arbeite, ist .NET, und dieses Benennungsmuster scheint im gesamten Framework verbreitet zu sein, zum Beispiel mit den folgenden Klassen:
DirectoryundDirectoryInfoKlassen;FileundFileInfoKlassen;ConnectionInfoKlasse (ohne KorrespondenzklasseConnection);DeviceInfoKlasse (ohne KorrespondenzklasseDevice);
Meine Frage lautet also: Gibt es eine allgemeine Begründung für die Verwendung dieses Benennungsmusters? Gibt es Fälle, in denen es sinnvoll ist, Namenspaare ( Thingund ThingInfo) zu haben, und andere Fälle, in denen nur die ThingInfoKlasse oder die ThingKlasse ohne ihr Gegenstück existieren sollte?
Fooverfügen, verfügen Sie möglicherweise über eine nicht instanziierbare Utility-Klasse Foos. Bei der Benennung kommt es auf die Konsistenz innerhalb der API und idealerweise über alle APIs auf der Plattform hinweg an.
EmployeeBeispiele finden sich in Dutzenden, entweder online oder in klassischen Büchern, die ich noch nicht gesehen EmployeeInfohabe (vielleicht, weil ein Mitarbeiter ein Lebewesen ist, nicht ein technisches Konstrukt wie eine Verbindung oder eine Datei). Aber einverstanden, wenn die Klasse EmployeeInfoin einem Projekt vorgeschlagen würde, könnte sie meiner Meinung nach ihren Nutzen haben.

InfoSuffix unterscheidet einestaticKlasse mit Dienstprogrammmethoden von ihrem zustandsbehafteten Gegenstück. Es ist keine "Best Practice" als solche; Es ist nur ein Weg, den das .NET-Team gefunden hat, um ein bestimmtes Problem zu lösen. Sie hätten genauso gut kommen mitFileUtilityundFileaberFile.DoSomething()undFileInfo.FileNamescheinen besser zu lesen.