Welche Philosophie / Argumentation steckt hinter den Pascal-Casing-Methodennamen von C #?


22

Ich fange gerade erst an, C # zu lernen. Ich komme aus Java, C ++ und Objective-C und finde, dass die Pascal-Schreibweise der Methodennamen in C # ziemlich einzigartig ist und es anfangs etwas schwierig ist, sich daran zu gewöhnen. Was ist die Begründung und Philosophie dahinter?

Ich vermute, es liegt an den C # -Eigenschaften. Anders als in Objective-C, wo Methodennamen genau so sein können wie Instanzvariablen, ist dies bei C # nicht der Fall. Ich würde vermuten, dass eines der Ziele bei Eigenschaften (wie es bei den meisten Sprachen der Fall ist, die dies unterstützen) darin besteht, Eigenschaften von Variablen und Methoden wirklich nicht unterscheidbar zu machen. Man kann also ein "int x" in C # haben und die entsprechende Eigenschaft wird zu X. Um sicherzustellen, dass Eigenschaften und Methoden nicht unterscheidbar sind, wird von allen Methodennamen, die ich vermute, auch erwartet, dass sie mit einem Großbuchstaben beginnen. (Dies ist nur meine Hypothese, basierend auf dem, was ich bisher über C # weiß - ich lerne noch). Ich bin sehr gespannt, wie diese neugierige Richtlinie entstanden ist

(BEARBEITEN: Mit Pascal-Schreibweise meine ich PascalCase (was im Grunde genommen camelCase ist, aber mit einem Großbuchstaben beginnt). Methodennamen beginnen in den meisten Sprachen normalerweise mit einem Kleinbuchstaben.)


Wenn Sie sehen würden, dass alle Mitglieder einer bestimmten Familie ihre Wände in all ihren Häusern mit seltsamen Insignien bemalt haben, wären Sie neugierig, warum sie es so seltsam gemacht haben?
Nocturne

1
Warum heißt es wohl Pascal- Fall?
R. Martinho Fernandes

1
@Martinho Fernandes es ist ein Standardname für diesen Stil, überprüfen Sie Google
Andrey

1
@Nocturne - Ja. Ich wäre neugierig :)
Joel Etherton

1
Die Angabe "Methodennamen beginnen in den meisten Sprachen mit einem Kleinbuchstaben" ist nach meiner Erfahrung falsch. Konventionen, die mit einem Großbuchstaben beginnen - mit oder ohne Unterstreichung von Wörtern - sind weit verbreitet, jedoch nicht unbedingt in offiziellen Sprachrichtlinien. Die meisten Sprachstandards haben keine einzigen offiziellen Styleguides. Nicht wenige Sprachen (hauptsächlich ältere) ignorieren die Groß- und Kleinschreibung und verwenden häufig Kleinbuchstaben, da die Nicht-Drücken-Verschiebung die faulste Regel ist .
Steve314

Antworten:


27

Es ist Geschmackssache. Jemand hat einmal beschlossen, Pascal-Stil für Namen zu verwenden, und es wurde ein Standard.

Ich vermute, es war Anders Hejlsberg , der Architekt von Delphi, der Nachfolger von Pascal. Der Gehäusestil ist dort derselbe wie in C #.


Das würde meine Antwort sein. : P
DevSolo

@ DevSolo Entschuldigung, ich fing an zu antworten, als die Frage bei Stackoverflow war :)
Andrey

Ich denke, dass die Wurzeln noch tiefer in die alte Geschichte gehen - siehe meine Antwort unten :)
Davka

20

Wenn Sie nach Gründen fragen, ist hier einer direkt aus dem Maul des Pferdes:

Geschichte rund um Pascal Casing und Camel Casing Artikel von Brad Abrams auf MSDN-Blogs

Bei der ersten Entwicklung des Frameworks hatten wir hunderte von Stunden Debatte über den Namensstil. Um diese Debatten zu erleichtern, haben wir eine Reihe von Begriffen geprägt. Da Anders Heilsberg (der ursprüngliche Designer von Turbo Pascal ) ein Schlüsselmitglied des Designteams ist, ist es kein Wunder, dass wir den Begriff Pascal-Gehäuse für den Gehäusestil gewählt haben, der von der Programmiersprache Pascal populär gemacht wurde ...

Die Pascal-Casing- Konvention schreibt das erste Zeichen jedes Wortes groß (einschließlich Akronymen mit einer Länge von mehr als zwei Buchstaben) ...

Und hier sind die Gestaltungsrichtlinien: Gestaltungsrichtlinien für Klassenbibliotheksentwickler

Diese Richtlinien sollen Klassenbibliotheksdesignern helfen, die Kompromisse zwischen verschiedenen Lösungen zu verstehen. Es kann Situationen geben, in denen ein guter Bibliotheksentwurf erfordert, dass Sie gegen diese Entwurfsrichtlinien verstoßen. Solche Fälle sollten selten vorkommen, und es ist wichtig, dass Sie eine solide Begründung für Ihre Entscheidung vorlegen. Der Abschnitt enthält Richtlinien für die Benennung und Verwendung von Typen in .NET Framework sowie Richtlinien für die Implementierung gängiger Entwurfsmuster ...


2
TurboPascalist das Baby von Philip Kahn(aka Borland), das für Microsoft sehr praktisch ist, um es zu vergessen. Politik ....
Davka

1
Die Kommentare zum ersten Link sind großartig, lol.
JMQ

7

Ich kenne mich mit Philosophie nicht aus, aber Pascal-Gehäuse scheint seit mindestens Win32-API-Tagen auf Microsoft-Plattformen weit verbreitet zu sein.


8
und ich hasse es immer noch, lol.
JMQ

2

Ich glaube nicht, dass dahinter eine bestimmte Philosophie steckt. Es musste Richtlinien geben, und es gab viele Punkte, die sich darauf ausgewirkt haben könnten:

  • Sie wollten alle Präfixnotationen loswerden (ungarisch hier lesen)
  • Sie wollten, dass lokale / private Mitglieder und öffentliche Mitglieder durch einfaches Lesen ihrer Namen unterschieden werden.
  • Sie wollten nicht, dass C # -Code wie Java-Code aussieht (der in hohem Maße Camel Case verwendet)

Beachten Sie, dass diese Benennungsrichtlinie für .NET Framework und nicht speziell für C # gilt. In VB.NET, einer Sprache, bei der die Groß- und Kleinschreibung nicht beachtet wird, bleibt die Konvention dieselbe, Sie können jedoch nicht zwischen privaten und öffentlichen Mitgliedern nach Groß- und Kleinschreibung unterscheiden.
R. Martinho Fernandes

@Martinho: einverstanden. aber ich denke immer noch, dass dies einer der Gründe war.
decyclone

7
+1: "Sie wollten nicht, dass C # -Code wie Java-Code aussieht (der in hohem Maße Kamelkästen verwendet)": Ich vermute sehr, dass Sie hier richtig sind!
Giorgio

Was ironisch ist, ist, dass trotz des Hasses einiger Leute gegen die ungarische Notation Java und C # in der Praxis wahrscheinlich beide viel bessere Sprachen gewesen wären, wenn sie Apps Hungarian (oder eine andere Namenskonvention) übernommen hätten, um Referenztypfelder zu unterscheiden, die ein veränderbares Objekt "besitzen" identifiziert damit diejenigen, die eine Instanz vom Typ Mutable identifizieren, die niemals mutiert werden darf usw. Auch wenn die Runtime sich nicht um solche Unterscheidungen kümmert, ist es unmöglich, Code zu schreiben, der effizient und korrekt ist, ohne zu wissen, welche Variablen von welcher Art sind.
Supercat

0

Ich weiß nicht, dass sich hinter dem Gehäuse eine andere "Philosophie" verbirgt, als es schön und kompakt ist. Sie kann leicht als mehrere Wörter ohne Unterstriche angezeigt werden.

In den letzten Jahrzehnten gab es viele Gehäusevarianten. Sie reichten von sehr knapp (siehe C und die Standard-C-Bibliothek) bis ausführlich mit Unterstrichen, die jedes Wort trennen. Die Namenskonvention der .NET-Bibliothek ist zwar immer noch ziemlich ausführlich, aber ich denke, dass sie einen gewissen Mittelweg in Bezug auf die Schreibweise einnimmt.


5
Vergessen Sie nicht, Ihren Lisp-Stil zu benennen!
R. Martinho Fernandes

@Martinho Fernandes tatsächlich im Kontext von C-ähnlichen Sprachen ist es nicht gültig.
Andrey

Ja, Lisp berücksichtigt Whitespace. (- var1 var2)
Michael K

@Martinho Fernandes: Natürlich erfordert dies die Verwendung von Leerzeichen, um Token zu trennen. Es ist auch COBOL-STYLE-NAMING, was es für die Sprachen, die ich am meisten bewundere und am wenigsten bewundere, üblich macht.
David Thornley

0

Das C # -Design wurde von Niklaus Wirth , dem ursprünglichen Erfinder von Pascal, überwacht . Siehe die Verbindung? ... :)

Neugierig # 1: Ich erinnere mich noch genau an die Ankündigung von .NET und C # (ja, ich bin prähistorisch ...) und wie Microsoft damit prahlte, dass Wirths Name auf C # stand. Die Wikipedia-Seiten auf keiner (C # und Wirth) erwähnen dies jedoch.

Neugierig # 2: Obwohl es genannt wird PascalCase, wurde es vom TurboPascalCompiler (der schließlich wurde Borland) populär gemacht , nicht von der Sprache selbst.


4
und TurboPascal wurde bequem von Anders Hejlsberg entworfen und gebaut ...
SWeko

3
Anders Hejlsberg war IIRC der Hauptdesigner von Delphi und arbeitete viel an Turbo Pascal, aber Turbo Pascal war ursprünglich nicht sein Baby (es war Philip Kahns). Niklaus Wirth erfand das Original Pascal und führte es durch die Standardisierung, dann sah er den Standard weitgehend ignoriert. Außerdem war Wirth fast das ganze Leben in C # im Ruhestand und entwarf zuvor mehrere Nachfolge-Pascal-Sprachen (zuletzt Oberon 2), sodass ich bezweifle, dass er überhaupt eine direkte Beteiligung hatte. Microsoft prahlte lautstark damit, Hejlsberg an Bord zu haben. Turbo Pascal war von Anfang an ein Borland-Produkt.
Steve314

Es macht mir nichts aus, ein Downgrade
durchzuführen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.