Kann mir jemand die Codierungskonvention von C # erklären?

14

Ich habe kürzlich angefangen, mit Unity3D zu arbeiten und hauptsächlich mit C # zu schreiben. Da ich normalerweise in Java programmiere, sind die Unterschiede nicht allzu groß, aber ich habe trotzdem auf einen Crashkurs verwiesen , um sicherzugehen, dass ich auf dem richtigen Weg bin.

Meine größte Neugier bei C # ist jedoch, dass der erste Buchstabe der Methodennamen in Großbuchstaben geschrieben wird (z. B. Java: getPrime()C #: GetPrime()aka: Pascal Case?). Gibt es dafür einen guten Grund? Ich verstehe von der Crashkurs-Seite, dass ich gelesen habe, dass es anscheinend eine Konvention für .Net ist, und ich habe keine Möglichkeit, sie jemals zu ändern, aber ich bin gespannt, warum dies im Gegensatz zum normalen (relativen?) Kamelfall so gemacht wurde das heißt, Java verwendet.

Hinweis: Ich verstehe, dass Sprachen ihre eigenen Kodierungskonventionen haben (Python-Methoden sind alles Kleinbuchstaben, was auch für diese Frage gilt), aber ich habe nie wirklich verstanden, warum sie nicht in einen Standard formalisiert sind.

ahodder
quelle
18
Ich glaube wirklich nicht, dass man sich camelCaseund PascalCaseund ansehen underscore_caseund sagen kann, dass einer von ihnen normal ist (sogar relativ normal) und die anderen nicht. Wie @dasblinkenlight sagte, ist es eine willkürliche Wahl. Das einzige, was Sie für ungewöhnlich hält, ist, dass Sie "normalerweise in Java programmieren" und sich daher an die willkürliche Wahl für Java gewöhnt haben.
Carson63000
Verwenden Sie stattdessen JavaScript .. für Unity3D :)
Lipis
@Lipis Warum für - andere als persönlichen Geschmack? ;-)
Ahodder
@AedonEtLIRA ganz persönlich .. egal :) Genießen Sie Unity, egal welche Sprache .. Sie werden am Ende mit ..
Lipis
@Lipis Soweit ist es toll. Tonnenweise Schnickschnack und ich habe noch kein Geld dafür gespendet. Aber ich bevorzuge den strukturierten Stil von C # (c / c ++) und Java.
Ahodder

Antworten:

27

Namenskonventionen stehen für eine willkürliche Auswahl ihres Herausgebers. In der Sprache selbst gibt es nichts, was Sie daran hindert, Ihre Methoden so zu benennen, wie Sie es in Java tun: Solange das erste Zeichen ein Buchstabe / Unterstrich ist und alle anderen Zeichen Buchstaben, Ziffern oder Unterstriche sind, wird C # dies nicht tun beschweren. Die mit .NET gelieferten Klassenbibliotheken folgen jedoch einer Konvention, die Microsoft intern übernommen hat. Microsoft hat diese Richtlinien auch veröffentlicht , sodass andere Benutzer sie möglicherweise auch für ihre eigenen Klassenbibliotheken übernehmen können. Obwohl Sie die Richtlinien von Microsoft befolgen oder ignorieren möchten, kann es sein, dass andere Benutzer sich schneller mit Ihrem Code vertraut machen, wenn Sie dieselben Benennungsrichtlinien befolgen.

dasblinkenlight
quelle
Es gibt jedoch normalerweise einige Gründe für eine Konvention, und wenn ich lese: "Gibt es einen guten Grund dafür?" Ich verstehe es als eine Frage über WARUM nicht WAS.
Greenoldman
Pascal für öffentliche / interne / statische Mitglieder und alle Methoden. Kamel für Privat. Sie können den Umfang eines Tokens beim Scannen besser unterscheiden. Das thisSchlüsselwort macht das gleiche. Die Stilwahlen sind praktisch, auch wenn sie fremd erscheinen mögen
Gusdor
23

Möglicherweise aufgrund des Einflusses von Pascal / Delphi. Der Schöpfer von C # und Delphi war immerhin dieselbe Person (Anders Hejlsberg).

Delphi-Codierungskonventionen stimmen in dieser Hinsicht im Großen und Ganzen mit denen von C # überein. siehe http://www.econos.de/delphi/cs.html#ObjectPascal_Procedures oder http://wiki.delphi-jedi.org/index.php?title=Style_Guide#Method_Naming - Zufall?

Konrad Morawski
quelle
4
Ein +1 dafür, weil es den eigentlichen Grund dafür gibt, warum diese bestimmte willkürliche Wahl für C # getroffen wurde.
Maximus Minimus
4

Zusätzlich zu den anderen Antworten können Kamel-Groß- und Kleinschreibung für Methoden zu Konflikten mit Namen für private Mitglieder, Parametern und Methodenvariablen führen, die Kamel-Groß- und Kleinschreibung für ihre Benennung verwenden. In Java (und C # 1.0) ist dies nicht besonders häufig, da die Verwendung von Delegaten umständlich und selten ist. In modernem C # ist das nicht gerade üblich , aber es ist auch nicht ungewöhnlich.

Telastyn
quelle
1
Der Unterstrich sollte nicht in privaten C # -Feldern verwendet werden (siehe blogs.msdn.com/b/brada/archive/2005/01/26/361363.aspx , z. B.), ist jedoch umstritten und wird häufig verwendet.
Jens
1
Sich auf die Schreibweise zu verlassen, um zwischen Sprachkonstrukten zu unterscheiden, ist eine wirklich schlechte Idee, unabhängig davon, ob die Sprache dies zulässt oder nicht.
gbjbaanb
4
@Telastyn diese Aussage ist ziemlich schockierend. Die meisten .NET-Klassenbibliotheken verwenden diese Konvention.
MattDavey
1
@Dunk wie kommt es plötzlich zu meiner Convention? Ich habe nur einen Kommentar abgegeben, ich habe auch keine Meinung dazu :)
MattDavey
2
@MarjanVenema: Ich bin nicht sicher, wovon Sie sprechen, aber C # unterscheidet Groß- und Kleinschreibung und es kann durchaus zu Kollisionen zwischen Mitgliedern mit ähnlichen Gehäusen kommen. Dies macht Spaß und ist aufregend, wenn Sie aktuelle case-IN-sensitive Sprachen wie VB.NET haben, mit denen Sie auf Bibliotheksebene arbeiten.
Wyatt Barnett