2009-07-12 8 views

Antwort

11

Wenn Sie dieselbe Logik an mehreren Stellen verwenden müssen, ist es sinnvoll, eine separate Methode zu verwenden.

Wenn Sie nur einmal die Logik verwenden müssen und es ist ziemlich kurz, ist es sinnvoll, eine anonyme Funktion zu verwenden. Wenn der Delegat Zugriff auf lokale Variablen in der Methode benötigt, die ihn erstellt, fungieren anonyme Funktionen als Schließungen, die auch sehr praktisch sein können. Eine anonyme Funktion kann nützlich sein, auch wenn sie ziemlich lang ist, wenn sie für Parallelisierung mit Parallel Extensions verwendet wird - Teil des Punktes ist, dass Sie vorhandenen seriellen Code nehmen und ihn parallel an Ort und Stelle "parallelisieren" können ein großes Ausmaß.

Sie sollten auch die Testbarkeit in Betracht ziehen - wenn der Code Ihres Delegierten ausreichend kompliziert ist, so dass er seine eigenen Unit-Tests garantiert, ist es sehr sinnvoll, ihn als Methode auszugeben. (Unglücklicherweise müsste es entweder eine interne Methode sein, die InternalsVisibleTo oder eine öffentliche Methode verwendet, wo Sie normalerweise normalerweise privat sein möchten, aber so ist das Leben.)

+0

Die Trennung der Logik war etwas, das ich nicht in Betracht gezogen hatte, und die Leichtigkeit des Zugriffs auf lokale Variablen ohne Parameter zu übergeben ist interessant. Sind parallele Erweiterungen eine C# 4.0-Funktion? –

+0

Ich möchte hinzufügen, dass die beiden sich nicht gegenseitig ausschließen. Es ist oft praktisch, eine anonyme Funktion zu haben, die meist eine reguläre Funktion aufruft, um die Vorteile der Wiederverwendbarkeit und der Sperrung gleichzeitig zu nutzen. –

+0

Ja, parallele Erweiterungen werden mit 4.0 geliefert. –

5

Ich verwende anonyme Methoden, wenn die Funktion, die ausgeführt werden soll, nur von diesem Delegat ausgeführt werden soll (mit anderen Worten: wenn ich diese Funktion an keinem anderen Ort brauche), und wenn die Funktion/Methode ausgeführt werden ist relativ kurz (maximal 5 Zeilen).

Aber es gibt keine strengen Regeln, wann was zu verwenden ist.
IMHO, ich finde, dass anonyme Methoden in den meisten Situationen nicht zur Lesbarkeit beitragen, also verwende ich sie meistens nicht.

+0

Ah, das macht Sinn re: relativ kurze Länge. Danke für die Meinung zur Lesbarkeit, da ich die anonyme Syntax ein wenig komplexer fand und ich mich fragte, ob das nur ich war! –