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 Sensor
eine Klasse ist, die den tatsächlichen Sensor darstellt (wenn er tatsächlich mit einem Arbeitsgerät verbunden ist), wird SensorInfo
sie verwendet, um nur die Eigenschaften eines solchen Sensors darzustellen. Zum Beispiel würde ich beim Speichern von Dateien a SensorInfo
in 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 Employee
offensichtlich nur eine Darstellung der realen Person, aber meines Wissens würde niemand vorschlagen, die Klasse EmployeeInfo
stattdessen 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:
Directory
undDirectoryInfo
Klassen;File
undFileInfo
Klassen;ConnectionInfo
Klasse (ohne KorrespondenzklasseConnection
);DeviceInfo
Klasse (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 ( Thing
und ThingInfo
) zu haben, und andere Fälle, in denen nur die ThingInfo
Klasse oder die Thing
Klasse ohne ihr Gegenstück existieren sollte?
Foo
verfü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.
Employee
Beispiele finden sich in Dutzenden, entweder online oder in klassischen Büchern, die ich noch nicht gesehen EmployeeInfo
habe (vielleicht, weil ein Mitarbeiter ein Lebewesen ist, nicht ein technisches Konstrukt wie eine Verbindung oder eine Datei). Aber einverstanden, wenn die Klasse EmployeeInfo
in einem Projekt vorgeschlagen würde, könnte sie meiner Meinung nach ihren Nutzen haben.
Info
Suffix unterscheidet einestatic
Klasse 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 mitFileUtility
undFile
aberFile.DoSomething()
undFileInfo.FileName
scheinen besser zu lesen.