Ich unterstütze auch die Verwendung von _ => _.method()
einzeiligen Lambdas mit Methodenaufruf, da dies das kognitive Gewicht des Befehls verringert. Insbesondere bei der Verwendung von Generika wird beim Schreiben x => x.method()
nur die sekundenschnelle Überlegung "Was ist das 'x'? Ist es eine Koordinate im Raum?" Hinzugefügt.
Betrachten Sie den folgenden Fall:
Initialize<Client> ( _=>_.Init() );
Bei einem Generics-Aufruf fungiert der Unterstrich in diesem Fall als "Bypass-Symbol". Es vermeidet Redundanz und definiert, dass der Typ des Arguments offensichtlich ist und aus der Verwendung abgeleitet werden kann - genau wie wenn Sie 'var' verwenden, um zu verhindern, dass eine Typdeklaration wiederholt wird. Schreibenclient=>client.Init()
hier würde die Anweisung nur verlängern, ohne ihr eine Bedeutung hinzuzufügen.
Dies gilt natürlich nicht für die Parameter, die an die Methode übergeben werden sollen, die beschreibend benannt werden sollte. Z.B.:Do( id=>Log(id) );
Die Verwendung eines einzelnen Unterstrichparameters für Methodenaufrufe ist kaum zu rechtfertigen, wenn ein Codeblock anstelle eines Einzeilers verwendet wird, da der Lambda-Bezeichner von seiner generischen Definition getrennt wird. Wenn derselbe Bezeichner wiederverwendet werden soll, geben Sie ihm im Allgemeinen einen beschreibenden Namen.
Das Fazit ist, dass Ausführlichkeit nur für die Disambiguierung gerechtfertigt ist, insbesondere für Lambdas, die erstellt wurden, um die Erstellung anonymer Delegierten zu vereinfachen. In jedem Fall sollte gesunder Menschenverstand verwendet werden, um Lesbarkeit und Prägnanz auszugleichen. Wenn das Symbol nur ein "Haken" für die tatsächliche Funktionalität ist, sind Bezeichner mit einem Zeichen vollkommen in Ordnung. Dies ist bei For-Schleifen und den Buchstaben "i" und "j" als Indexer der Fall.