30 Stimmen

Sollte ich *immer* implizit typisierte lokale Variablen in C# 3.0 bevorzugen?

Resharper denkt das sicherlich, und es wird Sie direkt nach dem Auspacken auffordern, die

Dooberry dooberry = new Dooberry();

zu

var dooberry = new Dooberry();

Gilt das wirklich als der beste Stil?

1 Stimmen

Hmmmmm... Brombeeren... lecker!

40voto

Jon Galloway Punkte 51200

Es ist natürlich eine Frage des Stils, aber ich stimme Dare zu: C# 3.0 Implizite Typendeklarationen: Zu var oder nicht zu var? . Ich denke, dass die Verwendung von var anstelle eines expliziten Typs Ihren Code weniger lesbar macht, wie im folgenden Code:

var result = GetUserID();

Was ist das Ergebnis? Ein int, ein String, eine GUID? Ja, es ist wichtig, und nein, ich sollte mich nicht durch den Code wühlen müssen, um es zu wissen. Besonders ärgerlich ist das in Codebeispielen.

Jeff schrieb dazu einen Beitrag, in dem es heißt er begünstigt var . Aber der Typ ist verrückt!

Ich erkenne ein Muster für den Stackoverflow-Erfolg: alte CodingHorror-Beiträge ausgraben und (im Stil von Jeopardy) in Form einer Frage formulieren.

9 Stimmen

Warum legen Sie nicht den Namen der Variablen fest, anstatt sich über var zu beschweren? var userID = GetUserID(); Es ist eigentlich nicht sehr wichtig, ob userID ein String oder int ist, es ist etwas, das den Benutzer identifiziert und von den relevanten Funktionen akzeptiert werden sollte.

12voto

sieben Punkte 2091

Ich verwende es nur, wenn es klar ersichtlich ist, was var ist.

für mich klar:

XmlNodeList itemList = rssNode.SelectNodes("item");
var rssItems = new RssItem[itemList.Count];

für mich nicht klar:

var itemList = rssNode.SelectNodes("item");
var rssItems = new RssItem[itemList.Count];

10voto

Greg Beech Punkte 127525

Die beste Zusammenfassung der Antwort, die ich darauf gesehen habe, lautet Kommentar von Eric Lippert die im Wesentlichen besagt, dass Sie den konkreten Typ verwenden sollten, wenn es wichtig ist, was der Typ ist, aber sonst nicht. Im Wesentlichen sollten Typinformationen für Stellen reserviert werden, an denen der Typ wichtig ist.

In meinem Unternehmen ist es Standard, überall var zu verwenden, was wir nach Lesen verschiedener Empfehlungen und anschließendes Ausprobieren, um herauszufinden, ob das Fehlen kommentierter Informationen zum Typ eine Hilfe oder ein Hindernis darstellt . Wir hatten das Gefühl, dass es eine Hilfe war.

Die meisten der Empfehlungen, auf die verlinkt wurde (z. B. die von Dare), stammen von Leuten, die noch nie versucht haben, mit var anstelle des konkreten Typs zu kodieren. Das macht die Empfehlungen fast wertlos, weil sie nicht aus Erfahrung sprechen, sondern lediglich extrapolieren.

Der beste Rat, den ich Ihnen geben kann, ist, es selbst auszuprobieren und zu sehen, was für Sie und Ihr Team funktioniert.

4voto

Darren Kopp Punkte 74401

@jongalloway - var macht Ihren Code nicht unbedingt unleserlicher.

var myvariable = DateTime.Now
DateTime myvariable = DateTime.Now;

Die erste ist genauso gut lesbar wie die zweite und erfordert weniger Arbeit

var myvariable = ResultFromMethod();

Hier haben Sie Recht, var könnte den Code weniger lesbar machen. Ich mag var, denn wenn ich eine Dezimalzahl in eine Potenz ändere, muss ich sie nicht an mehreren Stellen ändern (und sagen Sie nicht refactor, manchmal vergesse ich es, lassen Sie mich einfach var!)

EDITAR: Ich habe gerade den Artikel gelesen und stimme zu. lol.

2voto

Ryan Sampson Punkte 6537

Es gab eine gute Diskussion zu diesem Thema @ Codierungs-Horror

Ich persönlich versuche, seine Verwendung auf ein Minimum zu beschränken, da ich festgestellt habe, dass es die Lesbarkeit beeinträchtigt, insbesondere wenn eine Variable aus einem Methodenaufruf zugewiesen wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X