2010-12-20 9 views
5

Eine Verwendung für den Var-Typ in C# scheint, Shortcuts zu sein/zu vereinfachen/unnötiges Tippen zu sparen. Eine Sache, die ich in Betracht gezogen habe, ist diese:Wird die Verwendung von var als "Shortcuts" in C# akzeptiert?

MyApp.Properties.Settings.Default.Value = 1;

Das ist eine Tonne unnötigen Codes. Eine Alternative dazu bekannt, dass folgende:

using MyApp.Properties; 

- oder -

using appsettings = MyAppp.Properties.Settings; 

zu Folgendem führen: appsettings.Default.Value = 1 oder Settings.Default.Value = 1

Abit besser , aber ich würde es noch kürzer mag:

var appsettings = MyFirstCSharpApp.Properties.Settings.Default; 
appsettings.Value=1; 

Schließlich ist es kurz genug, und es könnte auch für andere annoyingly lange verwendet werden, ruft auch an, aber ist das ein akzeptierter Weg? Ich überlege, ob die "Verknüpfung Var" wird immer auf die vorhandene Instanz von was auch immer ich eine Verknüpfung zu zeigen? (offensichtlich nicht nur die Einstellungen wie in diesem Beispiel)

+2

Download Nachschärfer. –

+0

möglich Duplikat von [Verwendung von var Schlüsselwort in C#] (http://stackoverflow.com/questions/41479/use-of-var-keyword-in-c) – BrunoLM

+0

Ich schaute auf das Plugin, könnten Sie genauer in sein Wie hilft das? Ich gehe davon aus, dass ich Snippets für die Dinge hinzufügen könnte, für die ich Shortcuts haben möchte, aber das wäre kein "im Moment" -Ding auf die gleiche Weise wie vars Hilfe. –

Antwort

7

Es ist ein akzeptabler Code, in dem der Compiler es nimmt und weiß, was damit zu tun ist. Es ist ein akzeptabler Code, der den Code später verkürzt. Es ist wirklich nicht anders, als den Variablentyp (int/bool/was auch immer) zu definieren, anstatt var zu sagen. Wenn Sie im Studio sind, erhalten Sie mit der Maus der Variablen den kompilierten Typ. Es sollte also kein echtes Problem geben. Manche mögen es faul nennen, aber Faulheit ist die Mutter der Erfindung. Solange Ihr Code nicht unlesbar wird, kann ich nicht sehen, wie es ein großes Problem wäre.

+2

Und wenn Ihre Methoden und Klassen dem SRP (Single Responsibility Principle) folgen und kurz und prägnant sind und Ihre Variablen klar benannt und nahe der ein oder zwei Codezeilen deklariert sind, die sie verwenden, sollte es niemals Unklarheiten geben worüber eine Variable ist oder um welchen Typ es sich handelt ... –

1

Es ist nichts falsch daran, solange der Code klar ist.

1

Tatsächlich wird var mehr und mehr genau dafür verwendet: den Code zu verkürzen. mit

var myClass = new MyClass(); 

Speziell im Fall von

MyClass myClass = new MyClass(); 

, die sehr klar genug Und btw, ReSharper hilft Ihnen, dass var erzwingen überall verwendet wird, kann es sein!

+0

also das ist was reSharper mit der var macht, danke! –

+0

Dieser Beitrag ist kein gutes Beispiel für das OP. Im Fall von VdesmedT ist der Typ explizit, im Fall des OP nicht. –

1

Scheint mir gut, es kann Lesbarkeit verbessern, besonders wenn Sie diese lange .notated Syntax viele Male verwenden.

Als eine Seite, wenn Sie eine indizierte Eigenschaft oder eine automatisch generierte Eigenschaft (die für den GETTER on-the-fly funktioniert) mehrere Male verwenden, kann es einen Leistungseinbruch für jeden Zugriff dieser Eigenschaft geben. Das ist jedoch eine Mikrooptimierung, also sollten Sie sich wahrscheinlich nicht zu viele Gedanken darüber machen.

+0

danke gut zu wissen, es ist wahrscheinlich selten ein Problem, aber gut zu wissen! –

1

Seien Sie vorsichtig, dass sich die statischen Variablen, auf die Sie verweisen, nicht unter Ihnen ändern. Zum Beispiel würde brechen die folgenden Ihre „Abkürzung“:

var appsettings = MyFirstCSharpApp.Properties.Settings.Default; 
MyFirstCSharpApp.Properties.Settings.Default = new DefaultSettings(); // new reference 
appsettings.Value=1; 

Natürlich, ich behaupte nicht, dass Sie jemals Code schreiben würde, das dies tut, aber wir sprechen über globale Variablen hier ... beliebigen Code überall kann diese Referenz ändern. Caching der Referenz in appsettings kann in Fällen wie diesen gefährlich sein ...eine der vielen Fallstricke, mit statischen Variablen gekoppelt zu sein, IMO.

Verwandte Themen