Nach Konventionen werden Klassen oft wie Substantive, Methoden wie Verben und Schnittstellen wie Adjektive benannt.
Was ist die übliche Namenskonvention für einen Delegierten? Oder was ist ein guter Weg, um seinen Namen zu unterscheiden, wenn Delegierte nach Typen und anderen Dingen aufgelistet sind?
Meine unmittelbare Annahme ist, einen Delegaten eher als Adjektiv zu bezeichnen, da eine einzelne Methodenschnittstelle häufig durch einen Delegaten ersetzt werden kann.
Einige Gedanken:
delegate object ValueExtracting(object container);
delegate object ValueExtractor(object container);
delegate object ValueExtractionHandling(object container);
delegate object ValueExtractionHandler(object container);
quelle
RequestDelegate
für asp.net-Core erstellt haben; -]Microsoft Framework Design Guidelines - der Namensalmanach für mich, sagt Folgendes zum Thema:
quelle
ProcessBookDelegate
...RequestDelegate
in asp.net-core - so viel zu Konsistenz und Codierungskonventionen. Ich denke, die lesen nicht einmal ihre eigenen Dokumente.Da ein Delegat eine Aktion (ein Verb) ausführt, sollte der Delegat so genannt werden, wie Sie etwas nennen würden, das diese Aktion ausführt. Nehmen Sie
Converter<TInput, TOutput>
zum Beispiel. Das Verb ist Konvertieren . Die Konvertierung wird als Konverter bezeichnet , daher der Name des Delegaten.quelle
Dies hängt von einigen Dingen ab.
Wenn der Delegat als Ereignis verwendet werden soll, sollte er immer als
EventHandler
Subtyp bezeichnet werden, zum Beispiel:Wenn es nicht ein Ereignis ist, dann ist die MS Code - Richtlinien explizit (was ich kann nie die richtige Kopie auf Google zu finden scheine) empfehlen gegen Worte wie „delegiert“ oder „Handler“ in den Delegiertennamen einschließlich, außer in dem Sonderfall
EventHandler
Typen.Normalerweise sollten Delegaten nach Aktionen benannt werden , die wie
ValueExtracting
folgt aussehen (wenn der Delegat vor demValueExtracted
Extrahieren des Werts auftritt) oder (nach dem Extrahieren).Die
Func<T1, T2, ..., TResult>
Delegatensyntax wird ebenfalls immer häufiger, aber wenn Sie nicht über 4 oder mehr Parameter verfügen, müssen Sie Ihre eigenen überhaupt nicht deklarieren - verwenden Sie einfach einen vorhandenen:Diese Syntax ist am besten geeignet, wenn der Delegat als Abschluss verwendet wird . Der Delegat selbst hat keinen sehr interessanten Namen, aber das Argument ist ein Agentennomen (Extraktor, Anbieter, Bewerter, Selektor usw.).
Die meisten Delegiertenverwendungen passen in eine der oben genannten Kategorien. Stellen Sie also fest, für welche Kategorie sie angemessen ausgewählt werden.
quelle
Ich habe nie darüber nachgedacht, vor allem , weil ich nur eine der verwenden
EventHandler<T>
,Func<T>
oderAction<T>
Überlastungen und nie die Mühe meinen eigenen definieren. Ich würde wahrscheinlich ValueExtractor aus den von Ihnen aufgelisteten auswählen. Dadurch klingt es eher wie ein Objekt, und wenn Sie es aufrufen, verwenden Sie dieses Objekt, um eine Aktion auszuführen. Beispielsweise:Darüber hinaus werden die meisten integrierten Delegaten auch wie Substantive benannt. Befolgen Sie im Zweifelsfall das .NET Framework.
quelle
Ich würde mit ValueExtraction gehen.
Ich habe nie darüber nachgedacht, warum, aber ich denke, weil Sie eine Operation speichern und es ein Substantiv sein sollte. Genau genommen ist dies keine Operation, ich weiß ...
quelle
Basierend auf
Enumerable.Sum
würde ich den Delegaten als übergebenFunc<object, object>
und den Parameter benennenselector
:Wenn Sie Ihren eigenen Delegierten dafür machen müssen, würde ich mitmachen,
ValueExtractor
da dies der aussagekräftigste Name für das ist, was es tut.quelle