Die verschiedenen Token in Ihrem Code (Variablen, Klassen, Funktionen, Namespaces, etc.) können mit einem dieser drei Stile benannt werden, grob gesagt:
- Camel Case (z. B. someVar, someClass, somePackage.xyz).
- Pascal Case (z. B. SomeVar, SomeClass, SomePackage.xyz).
- Unterstriche (z.B. Some_var, Some_class, Some_package.xyz).
Im Kamelgehäuse beginnen Namen mit einem Kleinbuchstaben, aber jedes Eigenwort im Namen wird groß geschrieben, ebenso Akronyme. Zum Beispiel sind häufig verwendete Token in vielen Sprachen wie toString, checkValidity, lineHeight, timestampToLocalDateTime usw. alles Beispiele für Camel-Casing.
Die Pascal-Schreibweise ähnelt der Camel-Schreibweise, mit dem Unterschied, dass der erste Buchstabe ebenfalls mit einem Großbuchstaben beginnt (SomeClass statt someClass).
Bei der Unterstrich-Schreibweise wird alles kleingeschrieben (auch Akronyme) und die Wörter werden durch Unterstriche getrennt (some_class, some_func, some_var, etc). Diese Konvention ist im Volksmund auch als „Snake Case“ bekannt.
Die allgemeine Idee ist, dass Sie jede Konvention in Ihrem Projekt verwenden können, solange Sie konsequent sind, sie überall zu verwenden. Wenn Sie aber für ein großes Projekt oder Team programmieren, sollten Sie sich an die Norm dessen halten, was dort verwendet wird. Daher ist es hilfreich, die Konventionen zu kennen, die in verschiedenen Programmiersprachen üblich sind.
Die allgemeine Praxis für eine Sprache im C-Stil wie Java oder JS ist, camelCase für alle Variablen und Objektmitglieder (Eigenschaften & Methoden) und PascalCase für Klassennamen und Konstruktoren zu verwenden. Namespaces (oder Packages in der Java-Welt) sind in der Regel in CamelCase.
Einige Sprachen machen jedoch eine Ausnahme davon. C# zum Beispiel verwendet PascalCase für Namespaces und sogar für öffentliche Methoden. Daher ist die Hauptfunktion (oder der Einstiegspunkt) in Java immer static void main()
, in C# aber static void Main()
(Beachten Sie die Großschreibung des Wortes „Main“).
Einige Sprachen, die ihre Syntax nicht von C ableiten (wie Python & Ruby), verwenden Unterstriche für fast alles, außer für Klassennamen. Daher ist es immer sys.base_prefix
anstelle von sys.basePrefix
datetime
anstelle von DateTime
str.splitlines()
anstelle von str.splitLines()
in Python.
Bei der Standardbibliothek von Python ist mir aufgefallen, dass sogar die Klassen manchmal Unterstriche verwenden, was eine Inkonsistenz darstellt. Zum Beispiel ist datetime.datetime
eine Klasse und csv.excel_tab
ebenso. Die populären Frameworks und Bibliotheken (wie z.B. django und flask) verwenden jedoch den Camel Case für Klassen.
Eine ähnliche Inkonsistenz gibt es in PHP. Die Sprache hat sich in den letzten Jahren von Unterstrichen zu Camel-Case entwickelt, aber einige alte Token spuken immer noch in der Sprache herum. Zum Beispiel mysqli::set_local_infile_default
vs. PDOStatement::debugDumpParams
.
Es kommt also letztlich auf die eigene Präferenz an, wenn man ein Projekt beginnt. Aber es hilft zu wissen, was die üblicherweise befolgten Konventionen in populären Open-Source-Projekten in der Sprache Ihrer Präferenz sind.
Update
Es gibt noch einen vierten Fall, auf den @ovais hingewiesen hat, nämlich das Kebab-Case. Es ist sehr ähnlich wie das Underline-Case, nur dass die Unterstriche durch Bindestriche ersetzt werden. So wird some_func
zu some-func
, was offensichtlich nicht erlaubt ist, da der Bindestrich nicht zur Benennung von Token verwendet wird, da er in den meisten Programmiersprachen bereits für den Minus-Operator eingebaut ist. Wo der Bindestrich am häufigsten verwendet wird, ist bei der Erstellung von Klassen in Ihren CSS-Stylesheets! Namen wie main-div
main-navbar
und article-footer
werden häufig von Webentwicklern beim Schreiben ihres HTML/CSS verwendet. Diese Konvention ist im Grunde der Kebab-Fall.
Update
Wie @patrykrudnicki sagt, werden Konstanten unterschiedlich behandelt. Meiner Erfahrung nach ist der volle Unterstrich (SOME_CONST
) eine beliebte Konvention für Konstanten in vielen Sprachen wie Java, PHP und Python.
Aktualisieren
Zusammenfassend lässt sich sagen, dass dies die typische oder allgemein befolgte Konvention in den am häufigsten verwendeten Open-Source-Programmiersprachen ist:
Token | python | Java/JS | PHP |
---|---|---|---|
variable | unter_score | camelCase | Mix (in Richtung camelCase) |
funktion | unter_score() | camelCase() | Mix (in Richtung camelCase()) |
konstant | UNDER_SCORE | UNDER_SCORE | UNDER_SCORE |
Klasse | PascalCase | PascalCase | Mix (geht in Richtung PascalCase) |
Namensraum | unter_score | camelCase | Mix (geht in Richtung PascalCase) |
Ein paar hilfreiche Links:
- https://softwareengineering.stackexchange.com/questions/196416/whats-the-dominant-naming-convention-for-variables-in-php-camelcase-or-undersc
- https://stackoverflow.com/questions/149491/pascal-casing-or-camel-casing-for-c-sharp-code
- https://www.c-sharpcorner.com/forums/when-to-use-camel-case-and-pascal-case-c-sharp
- https://softwareengineering.stackexchange.com/questions/53498/what-is-the-philosophy-reasoning-behind-cs-pascal-casing-method-names