2012-04-26 19 views
8

Es ist eine gängige Praxis Aliase C# Typs anstelle von CTS-System zu verwenden. * Typen (int statt Int32 und string statt String). Mir ist jedoch nicht klar, was zu verwenden ist, um in diesem Fall eine statische Methode eines Typs aufzurufen: einen Alias ​​oder einen Systemtyp.Int32.Parse vs int.Parse

Microsoft scheint keine Richtlinien zu definieren, um Aliase anstelle von Systemtypen zu verwenden. In MSDN werden Aliase jedoch für Variablen und CTS-Äquivalente für statische Aufrufe verwendet. Zum Beispiel MSDN: Parsing Numeric Strings

int number; 
Int32.TryParse(value, out number); 

StyleCop definiert das Gegenteil in SA1121 - immer Aliase zu verwenden. So ist int.Parse in Ordnung, während Int32.Parse nicht ist.

Diese Frage ist eine Frage des Stils (meiner Meinung nach). Aber ich verstehe Gründe nicht, CTS-Typ für statische Anrufe zu verwenden.

+0

Ich würde zweite StyleCop Vorschlag verwenden vorschlagen. –

Antwort

8

Ich persönlich verwende immer volle Klassennamen für statische Methodenaufrufe. Dies unterstreicht die Tatsache, dass es sich in der Tat um Klassen handelt, die Code-Teile anstelle von einfachsten möglichen (primitiven) Daten enthalten, die die Aliase implizieren.

Ich verwende immer Aliase für Variablen.

+1

Habe meine Fragen überarbeitet und festgestellt, dass dies nicht akzeptiert wurde. Ihre Antwort gibt die vernünftige Erklärung, 'Int32.Something' zu tun. Obwohl ich den umgekehrten Weg bevorzuge :) – Mike

4

Es gibt absolut keinen technischen Unterschied, nur Codierung Stil. Persönlich befürworte ich int.Parse, aber es gibt viele bekannte experts, die das Gegenteil bevorzugen.

+0

Ich bevorzuge 'Int32.Parse', bin aber kein Experte. :) – Default

+1

@Default Nein, du bist einfach nicht bekannt. :-) – LarsTech

+0

Ich würde mich interessieren, was ist der Grund für die Verwendung des Alias. Ich kenne die Gründe für die Verwendung vollständiger Namen (siehe meine Antwort), aber ich habe nie die Argumentation für Aliase gehört. – Stilgar

1

empfehle ich int.Parse(...) statt int32 .Wenn Sie verwenden immagine jemand lesen Sie den Code auf 64-Bit-Computer ausgeführt wird, und es ist probbale, dass er nicht bewusst, dass int32 und int sind nur Aliase, wird es mache ihn zu falschen Annahmen.

Mit anderen Worten, auch wenn aus funktioneller Sicht gibt es keinen keinen Unterschied, Zweideutigkeit im Code zu vermeiden (Referenzen auf vermutlich 32-Bit-Code) Ich würde int.Parse(..)

+0

Dies zeigt keine Beziehung zu statischen Methoden, da die Größe der Daten mit der Variablen nicht zum Methodenaufruf in Beziehung steht. In der Tat können Sie lange tun i = int.Parse (...). Wie würden Sie String.IsNullOrEmpty vs string.IsNullOrEmpty rechtfertigen? – Stilgar

+0

@Stilgar: Ich spreche nicht über die Daten in irgendeiner seiner Darstellung. Ich rede von ** nur ** dem Namen: int32 versus int. Variablen, Größen von Variablen, Accessor-Typen und alle anderen Sachen sind nicht mit diesem Beitrag verbunden. – Tigran

Verwandte Themen