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

Misha Zaslavsky Punkte 6203

Sur C# 9.0 gibt es eine neue Möglichkeit, eine Klasse zu initialisieren, indem Neue Ausdrücke vom Typ "Ziel .

Sie können die Klasse wie folgt initialisieren:

Dooberry dooberry = new();

Mir persönlich gefällt das besser als die Verwendung einer var und es ist für mich besser lesbar.

Was den Aufruf einer Methode angeht, so ist das wohl Ihre Sache. Ich persönlich ziehe es vor, den Typ anzugeben, weil ich denke, dass es auf diese Weise besser lesbar ist:

Dooberry dooberry = GetDooberry();

In einigen Fällen ist es sehr klar, was der Typ ist, in diesem Fall verwende ich var:

var now = DateTime.Now;

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