Jetzt, da wir dank LINQ eine enorme Funktionalität haben, frage ich mich, welche Syntax vorzuziehen ist. Zum Beispiel fand ich die folgende Methode (dachte nur, dass es ein gutes Beispiel war):
%Vor%Wenn wir es in einen LINQ-Ansatz umwandeln würden, würde es so aussehen (nicht getestet):
%Vor%Was würden Sie lieber sehen und pflegen? Ist das verrückt oder genial?
Die Verwendung einer ForEach
Erweiterungsmethode ist in Ordnung, aber es gibt einen Zwischenansatz:
Wenn Sie tun eine ForEach
-Methode verwenden, würde ich sie definitiv in mehreren Zeilen formatieren:
(Reduzierte Einrückung, um das Umbrechen zu vermeiden ...)
oder:
%Vor%Vielleicht möchten Sie sogar das Bit "make non-primary" in eine separate Methode extrahieren. An diesem Punkt haben Sie:
%Vor%Das erinnert mich ein wenig an "sollte ich Regex oder Standard-String-Funktionen verwenden" oder "soll ich XSLT / XPATH verwenden, um XML zu transformieren oder SelectSingleNode ()" zu verwenden.
Die erste Option (z. B. Regex / XSLT / Linq) wird von jedem, der sie einige Zeit gelernt hat, oft als eleganter und leistungsfähiger angesehen.
Für alle anderen scheint es im Vergleich zur zweiten Option weniger lesbar und komplexer zu sein (zB String-Funktionen, SelectSingleNode (), einfache foreach-Schleife).
In der Vergangenheit wurde ich beschuldigt, die Dinge durch die Verwendung von Regex und XSLT / XPATH in meinem Design zu komplizieren.
Vor kurzem wurde ich beschuldigt, "Angst vor Veränderung" zu haben, indem ich einfachen foreach (und sogar für) Schleifen in vielen Situationen gegenüber Linq Where, Foreach etc.
bevorzugeIch erkannte bald, dass die Leute in beiden Fällen, die das sagten, diejenigen waren, die das Gefühl hatten, dass es "den einen Weg" gibt, alles zu tun.
Ich fand es immer schon viel klüger, jede Situation zu würdigen und das richtige Werkzeug für den Job auszuwählen. Ich ignoriere sie einfach und fahre mit meiner Annäherung fort;)
Für diese Situation, die Sie beschreiben, ist die erste Option mir vorzuziehen. Allerdings würde ich wahrscheinlich den Linq-Ansatz verwenden, wenn mein Team in Linq kompetent wäre, und wir hatten Kodierungsrichtlinien, um große Einzeiler zu vermeiden (indem wir sie aufteilen)
Alles, was die vertikale oder horizontale Komplexität reduziert, ist ein Plus für mich. Außerdem ist die Linq viel aussagekräftiger für das, was Sie erreichen möchten.
Tags und Links .net c# linq extension-methods