Namenskonvention (Programmierung)

Im Computerprogrammierung, a Namenskonvention ist eine Reihe von Regeln für die Auswahl der Zeichensequenz, für die verwendet werden soll Kennungen die Zeigen Variablen, Typen, Funktionenund andere Einheiten in Quellcode und Dokumentation.

Gründe für die Verwendung einer Namenskonvention (im Gegensatz zu Zulassen Programmierer Um eine Zeichensequenz auszuwählen) schließen Sie Folgendes ein:

  • Verringerung der Anstrengungen zum Lesen und Verständnis von Quellcode;[1]
  • So ermöglichen Sie Code -Überprüfungen, sich auf Fragen zu konzentrieren, die wichtiger sind als Syntax- und Benennungsstandards.
  • So ermöglichen Tools zur Überprüfung von Codequalität, um ihre Berichterstattung hauptsächlich auf andere wichtige Probleme als die Syntax- und Stilpräferenzen zu konzentrieren.

Die Wahl der Benennung von Konventionen kann ein enorm kontroverses Thema sein, wobei die Partisanen von jedem die Besten hält, um die besten und andere zu sein, um minderwertig zu sein. Umgangssprachlich soll dies eine Frage von sein Dogma.[2] Viele Unternehmen haben auch ihre eigenen Konventionen eingerichtet.

Mögliche Vorteile

Einige der potenziellen Vorteile, die durch die Einführung einer Namenskonvention erzielt werden können, umfassen Folgendes:

  • zusätzliche Informationen bereitstellen (d. H.,, Metadaten) über die Verwendung, auf die ein Kennung eingesetzt wird;
  • Erwartungen zu formalisieren und zu fördern Konsistenz innerhalb eines Entwicklungsteams;
  • Um die Verwendung von automatisiertem Gebrauch zu ermöglichen Refactoring oder suchen und ersetzen Sie Tools mit minimalem Fehlerpotential.
  • Klarheit bei potenziellen Unklarheiten zu verbessern;
  • Verbesserung des ästhetischen und professionellen Erscheinungsbilds des Arbeitsprodukts (zum Beispiel durch Ablehnung von überlangen Namen, komischen oder "niedlichen" Namen oder Abkürzungen);
  • Um "Namenskollisionen" zu vermeiden, die möglicherweise auftreten, wenn das Arbeitsprodukt verschiedener Organisationen kombiniert wird (siehe auch: Namespaces);
  • Bereitstellung sinnvoller Daten, die in Projekt -Handovers verwendet werden sollen, für die die Einreichung des Programmquellcodes und alle relevanten Dokumentationen erforderlich sind;
  • Um ein besseres Verständnis für die Wiederverwendung von Code nach einem langen Zeitraum der Zeit zu bieten.

Herausforderungen

Die Wahl der Benennung von Konventionen (und inwieweit sie durchgesetzt werden) ist oft ein umstrittenes Problem, wobei die Partisanen ihren Standpunkt als die besten und andere darstellen, um minderwertig zu sein. Selbst mit bekannten und gut definierten Namenskonventionen können einige Organisationen sie möglicherweise nicht konsequent an sie halten, was Unkonsistenz und Verwirrung verursacht. Diese Herausforderungen können verschärft werden, wenn die Regeln für die Namenskonvention intern inkonsistent, willkürlich, schwer zu erinnern oder auf andere Weise als belastend als vorteilhaft empfunden werden.

Lesbarkeit

Gut ausgewählte Kennungen erleichtern es Entwicklern und Analysten erheblich, zu verstehen, was das System tut und wie das Problem repariert oder erweitert wird Quellcode sich für neue Bedürfnisse bewerben.

Zum Beispiel obwohl, obwohl

 a = b * c; 

ist syntaktisch Richtig, sein Zweck ist nicht offensichtlich. Vergleichen Sie dies mit:

 Weely_Pay = Arbeitsstunden * stoundly_pay_rate; 

Dies impliziert die Absicht und Bedeutung des Quellcode, zumindest für diejenigen, die mit dem Kontext der Erklärung vertraut sind.

Experimente deuten darauf hin, dass der Identifikatorstil Rückruf und Präzision beeinflusst und dass Vertrautheit mit einem Stilgeschwindigkeitsrückfall.[3]

Gemeinsame Elemente

Die genauen Regeln einer Namenskonvention hängen von dem Kontext ab, in dem sie verwendet werden. Dennoch gibt es mehrere gemeinsame Elemente, die die meisten, wenn nicht alle Namenskonventionen in der heutigen gemeinsamen Verwendung beeinflussen.

Länge der Kennungen

Grundlegende Elemente aller Namenskonventionen sind die Regeln im Zusammenhang mit Kennung Länge (d. H. Die endliche Anzahl einzelner Zeichen, die in einer Kennung zulässig sind). Einige Regeln bestimmen eine feste numerische gebundene, während andere weniger genaue Heuristiken oder Richtlinien festlegen.

Die Identifikatorlängenregeln werden in der Praxis routinemäßig bestritten und diskutieren akademisch viel Debatten.

Einige Überlegungen:

  • Kürzere Kennungen können als zweckmäßiger bevorzugt werden, da sie einfacher zu tippen sind (obwohl viele IDEs und Textversorger eine Textabschluss bieten, was dies mindert)
  • Extrem kurze Kennungen (wie 'I' oder 'J') sind sehr schwer zu unterscheiden, die automatisierte Such- und Ersetzen von Tools ersetzen (obwohl dies kein Problem für ist Regex-basierte Werkzeuge)
  • Es können längere Kennungen bevorzugt werden, da kurze Kennungen nicht genügend Informationen codieren oder zu kryptisch erscheinen können
  • Längere Kennungen können aufgrund visueller Unordnung ungünstig werden

Es ist ein offenes Forschungsproblem, ob einige Programmierer kürzere Kennungen bevorzugen, da sie leichter zu tippen oder nachdenken zu können, als längere Kennungen, oder weil in vielen Situationen ein längerer Kennung einfach den sichtbaren Code zusammenfasst und keinen wahrgenommenen zusätzlichen Nutzen bietet.

Die Kürze in der Programmierung könnte teilweise zugeschrieben werden:

  • frühzeitig Linker Welche Variablennamen mussten auf 6 Zeichen beschränkt werden, um Speicher zu speichern. Ein späterer "Advance" ermöglichte es längere Variablennamen, für die menschliche Verständlichkeit zu verwenden, aber wo nur die ersten Charaktere signifikant waren. In einigen Versionen von BASIC wie TRS-80-Grundnamen Level 2, lange Namen, aber nur die ersten beiden Buchstaben waren signifikant. Dieses Merkmal ermöglichte ein fehlerhaftes Verhalten, das schwer zu debuggen könnte, beispielsweise wenn Namen wie "Wert" und "Mehrwertsteuer" verwendet wurden und als unterschiedlich sein sollen.
  • frühzeitig Quellcode -Redakteure fehlen Autocomplete
  • Frühe Monitore mit niedriger Auflösung mit begrenzter Linienlänge (z. B. nur 80 Zeichen)
  • Ein Groß

Briefkoffer und Ziffern

Einige Namenskonventionen beschränken, ob Buchstaben in Großbuchstaben oder Kleinbuchstaben erscheinen können. Andere Konventionen beschränken keinen Buchstabenfall, fügen jedoch eine genau definierte Interpretation auf der Grundlage des Briefes bei. Einige Namenskonventionen geben an, ob alphabetische, numerische oder alphanumerische Zeichen verwendet werden können und wenn ja, in welcher Reihenfolge.

Multiple-Wort-Kennungen

Eine häufige Empfehlung ist "verwenden Sie aussagekräftige Kennungen". Ein einzelnes Wort Möglicherweise ist nicht so sinnvoll oder spezifisch wie mehrere Wörter. Infolgedessen geben einige Namenskonventionen Regeln für die Behandlung von "zusammengesetzten" Kennungen an, die mehr als ein Wort enthalten.

Wie die meisten Programmiersprachen nicht zulassen Whitespace In Kennern wird eine Methode zur Abgrenzung jedes Wortes benötigt (um nachfolgende Leser einfacher zu interpretieren, welche Zeichen welchem ​​Wort gehören). Historisch gesehen einige frühe Sprachen, insbesondere Forran (1955) und Algol (1958) erlaubten Räume innerhalb von Identifikatoren, die das Ende der Identifikatoren nach Kontext bestimmen. Dies wurde in späteren Sprachen aufgrund der Schwierigkeit von aufgegeben Tokenisierung. Es ist möglich, Namen zu schreiben, indem sie einfach mit Wörtern verkettet werden, und dies wird manchmal verwendet, wie in mein Paket Für Java -Paketnamen,[4] Obwohl die Lesbarkeit länger leidet, wird normalerweise irgendeine Form der Trennung verwendet.

Trennzeichen getrennte Wörter

Ein Ansatz ist zu abgrenzen getrennte Wörter mit a nicht alphanumerisch Charakter. Die beiden für diesen Zweck üblicherweise verwendeten Zeichen sind die Bindestrich ("-") und die unterstreichen ("_"); z. B. der Name mit zwei Wörtern "zwei Wörter"würde als" dargestellt sein "zwei Wörter" oder "zwei Wörter". Der Bindestrich wird von fast allen Programmierern verwendet, die schreiben Cobol (1959), Weiter (1970) und Lispeln (1958); es ist auch häufig in Unix Für Befehle und Pakete und wird in verwendet CSS.[5] Diese Konvention hat keinen Standardnamen, obwohl sie als als bezeichnet werden kann Lisp-Case oder COBOL-CASE (vergleichen Pascal -Fall), Kebab-Case, Broschettenfalloder andere Varianten.[6][7][8][9] Von diesen, Kebab-Case, mindestens 2012, Dating,[10] hat seitdem eine gewisse Währung erreicht.[11][12]

Im Gegensatz dazu Sprachen in der Fortran/Algol -Tradition, insbesondere Sprachen in der C und Pascal Familien benutzten den Bindestrich für die Subtraktion Infix Bediener und wollte keine Räume um ihn herum benötigen (als Freiformsprachen), Verhinderung der Verwendung in Kennungen. Eine Alternative besteht darin, Unterstriche zu verwenden. Dies ist in der C -Familie (einschließlich Python) üblich, mit Kleinkappenwörtern, die zum Beispiel in gefunden werden Die C -Programmiersprache (1978) und ist als bekannt als bekannt als Schlangenfall. Unterstreicht mit Großbuchstaben wie in Upper_case werden üblicherweise für verwendet C Präprozessor Makros, daher als macro_case und für bekannt Umgebungsvariablen in unix, wie bash_version in verprügeln. Manchmal wird dies humorvoll als Screaming_Snake_Case bezeichnet.

Buchstaben-Fall getrennte Wörter

Ein anderer Ansatz besteht darin, die Wortgrenzen mit medialen Kapitalisierung anzuzeigen, die genannt wird. "Kamelase"," Pascal -Fall "und viele andere Namen, die also jeweils rendern"zwei Wörter" wie "zwei Wörter" oder "Zwei Wörter"Diese Konvention wird üblicherweise in verwendet Pascal, Java, C#, und Visual Basic. Behandlung von Initialismen in Identifikatoren (z. B. das "Xml" und "Http" in Xmlhttprequest) variiert. Einige bestimmen, dass sie niedriger sind (z. Xmlhttprequest) Um das Typen, die Lesbarkeit und die Leichtigkeit zu erleichtern Segmentierung, während andere sie oben belassen (z. Xmlhttprequest) für Genauigkeit.

Beispiele für Multiple-Wörter-Kennungsformate

Multiple-Wort-Identifikatorformate
Formatierung Name (en)
zwei Wörter Flachcase[13][14]
ZWEI WÖRTER Großbuchstaben[13]
zwei Wörter (niedriger) Kamelase, Dromedarycase
Zwei Wörter Pascalcase, Uppercamelcase, Studycase[15]
zwei Wörter Snake_Case, pothole_case
ZWEI WÖRTER Schreien Schlangenkoffer, Macro_case, Constant_case
zwei Wörter camel_snake_case
Zwei Wörter Pascal_snake_case
zwei Wörter Kebab-Case, Dash-Case, Lisp-Case, Wirbelsäulenhändler
ZWEI WÖRTER Zug-Case, Cobol-Case, Screaming-Kebab-Case
Zwei Wörter Zugfall,[13] HTTP-Header-Case[16]

Metadaten und Hybridkonventionen

Einige Namenskonventionen repräsentieren Regeln oder Anforderungen, die über die Anforderungen eines bestimmten Projekt- oder Problembereichs hinausgehen und stattdessen einen größeren übergeordneten Satz von Prinzipien widerspiegeln, die von dem definiert sind Softwarearchitektur, zugrundeliegend Programmiersprache oder eine andere Art von Querprojektmethodik.

Ungarische Notation

Am bekanntesten ist vielleicht Ungarische Notation, was entweder für den Zweck ("Apps ungarisch") oder die codiert werden Typ ("Systems ungarisch") einer Variablen in ihrem Namen.[17] Zum Beispiel gibt das Präfix "SZ" für den Variablen-Szname an, dass die Variable eine null-terminierte Zeichenfolge ist.

Positionsnotation

Ein Stil, der für sehr kurze (acht Zeichen und weniger) verwendet wird, könnte sein:

Diese Art von Konvent wird noch aktiv in Mainframes verwendet JCl und ist auch im 8.3 (maximal acht Zeichen mit Periodenabscheider gefolgt von drei Zeichen-Dateitypen) MS-DOS-Stil zu sehen.

Zusammengesetzter Wortschema (der Sprache)

IBMs "der Sprache" wurde in einem IMS dokumentiert (Informationsmanagementsystem) Handbuch.

Es wurde das Wortschema der Prime-Modifier-Klasse beschrieben, das aus Namen wie "Cust-Act-No" bestand, um "Kundenkontonennummer" anzuzeigen.

Hauptwörter sollten auf wichtige "Unternehmen" hinweisen, die für ein System von Interesse sind.

Modifikatorwörter wurden für zusätzliche Verfeinerung, Qualifikation und Lesbarkeit verwendet.

Klassenwörter sind idealerweise eine sehr kurze Liste von Datentypen, die für eine bestimmte Anwendung relevant sind. Gemeinsame Klassenwörter können: nein (Nummer), ID (Kennung), TXT (Text), AMT (Menge), Qty (Menge), FL (Flag), CD (Code), W (Arbeit) und so fort. In der Praxis wären die verfügbaren Klassenwörter eine Liste von weniger als zwei Dutzend Begriffen.

Klassenwörter, die typischerweise auf der rechten Seite positioniert sind (Suffix), diente ungefähr den gleichen Zweck wie Ungarische Notation Präfixe.

Der Zweck von Klassenwörtern bestand zusätzlich zu Konsistenz darin, dem Programmierer das anzugeben Datentyp eines bestimmten Datenfeldes. Vor der Akzeptanz von Booleschen Feldern (nur zwei Werte), FL (Flag) würde ein Feld mit nur zwei möglichen Werten anzeigen.

Sprachspezifische Konventionen

Aktionen

Die Codierungskonventionen und Best Practices von Adobe deuten auf die Benennung von Standards für Aktionen das stimmen größtenteils überein mit denen von ECMaskript. Der Stil der Identifikatoren ähnelt dem von dem von Java.

Ada

Im AdaDer einzig empfohlene Kennungsstil ist Mixed_case_with_underscores.[18]

Apl

Im Apl Dialekte, das Delta (δ) wird zwischen Wörtern verwendet, z. Perf & Dgr; -Square (in älteren APL -Versionen existierte traditionell kein Kleinbuchstaben). Wenn der Name verwendete, unterstrichen Sie Briefe, dann würde die Delta -Unterbarung (⍙) stattdessen verwendet.

C und C ++

Im C und C ++, Schlüsselwörter und Standardbibliothek Kennungen sind meistens Kleinbuchstaben. In dem C Standardbibliothek, abgekürzte Namen sind die häufigsten (z. ISALNUM für eine Funktionstest, ob ein Zeichen alphanumerisch ist), während die C ++ Standardbibliothek verwendet oft einen Unterstrich als Wortabscheider (z. außer Reichweite). Bezeichnungen, die dargestellt werden Makros werden unter Konvention nur unter Verwendung von Großbuchstaben und Unterstrichen geschrieben (dies hängt mit der Konvention in vielen Programmiersprachen der Verwendung von All-Opper-Case-Kennungen für Konstanten zusammen). Namen, die doppelte Unterstriche enthalten oder mit einem Unterstrich und einem Großbuchstaben beginnen, sind für die Implementierung vorbehalten (für die Implementierung vorbehalten (Compiler, Standardbibliothek) und sollte nicht verwendet werden (z. __reserviert oder _Reserviert).[19][20] Dies ist oberflächlich ähnlich wie Stropping, aber die Semantik unterscheidet __foo ist __foo (was reserviert ist), nicht Foo (aber in einem anderen Namespace).

C#

C# Die Benennung von Konventionen folgen im Allgemeinen den von Microsoft für alle .NET -Sprachen veröffentlichten Richtlinien[21] (Siehe .NET -Abschnitt unten), aber vom C# Compiler werden keine Konventionen durchgesetzt.

Die Microsoft -Richtlinien empfehlen die ausschließliche Verwendung von nur Pascalcase und Kamelase, wobei letztere nur für Methodenparameternamen und method-lokale Variablennamen verwendet werden (einschließlich methodisch-lokaler Const Werte). Eine besondere Ausnahme von Pascalcase ist für Zwei-Buchstaben-Akronyme, die eine Kennung beginnen. In diesen Fällen werden beide Briefe aktiviert (zum Beispiel, Iostream); Dies ist für längere Akronyme nicht der Fall (zum Beispiel, zum Beispiel, Xmlstream). Die Richtlinien empfehlen ferner, dass der Name an einen gegeben wird Schnittstelle sein Pascalcase Vorangegangen der Großbuchstaben I, wie in Ienumerable.

Die Microsoft -Richtlinien für die Namensfelder sind spezifisch für statisch, Öffentlichkeit, und geschützt Felder; Felder, die nicht sind statisch und das hat andere Zugangsniveaus (wie z. intern und Privatgelände) werden explizit von den Richtlinien abgedeckt.[22] Die häufigste Praxis ist die Verwendung Pascalcase für die Namen aller Felder, mit Ausnahme derjenigen, die sind Privatgelände (Und auch nicht Const Noch statisch), die angegebene Namen sind, die verwendet werden Kamelase Vorangegangen von einem einzelnen Unterstrich; zum Beispiel, _komplette Anzahl.

Jeder Bezeichner-Name kann durch das kommerzielle Symbol (kommerzielles AT) vorangestellt werden (@), ohne irgendwelche Bedeutung. Das heißt beide Faktor und @Faktor Beziehen Sie sich auf dasselbe Objekt. Nach Übereinkommen wird dieses Präfix nur in Fällen verwendet, in denen die Kennung ansonsten entweder ein reserviertes Schlüsselwort ist (wie z. zum und während), die nicht als Kennung ohne Präfix oder kontextbezogener Schlüsselwort verwendet werden darf (wie z. aus und wo), in welchen Fällen das Präfix nicht ausschließlich erforderlich ist (zumindest nicht bei seiner Erklärung; zum Beispiel, obwohl die Erklärung dynamische Dynamik; ist gültig, dies würde normalerweise als gesehen als dynamisch @dynamic; Um dem Leser sofort anzuzeigen, dass letzteres ein variabler Name ist).

gehen

Im gehen, die Konvention ist zu verwenden MixedCaps oder MixedCaps Anstatt zu unterstreichen, um MultiWord -Namen zu schreiben. Wenn Sie sich auf Strukturen oder Funktionen beziehen, gibt der erste Buchstabe die Sichtbarkeit für externe Pakete an. Wenn Sie den ersten Buchstaben in Großbuchstaben erstellen, wird dies nur im aktuellen Bereich verwendbar.[23]

Java

Im JavaDie Namenskonventionen für Kennungen wurden von verschiedenen Java -Gemeinschaften wie Sun Microsystems festgelegt und vorgeschlagen,[24] Netscape,[25] Ambysoft,[26] usw. Eine Stichprobe von Benennungskonventionen von Sun Microsystems ist unten aufgeführt, wobei ein Name in "Kamelase"Ist einer aus einer Reihe von Wörtern, die ohne Leerzeichen verbunden sind, mit jedem Wort - ausgenommen das erste Word - Anfangsbuchstaben in Hauptstädten - zum Beispiel" Kamelase ".

Kennertyp Regeln für die Benennung Beispiele
Klassen Klassennamen sollten Substantive in sein Uppercamelcasemit dem ersten Buchstaben jedes Wortes aktiviert. Verwenden Sie ganze Wörter - vermeiden Sie Akronyme und Abkürzungen (es sei denn, die Abkürzung wird viel häufiger verwendet als die lange Form wie URL oder HTML).
  • Klasse Raster {}
  • Klasse ImagesPrite {}
Methoden Methoden sollten Verben in sein Lowercamelcase oder ein Multi-Wort-Name, der mit einem Verb in Kleinbuchstaben beginnt; Das heißt, mit dem ersten Buchstaben in Kleinbuchstaben und den ersten Buchstaben nachfolgender Wörter in Großbuchstaben.
  • Lauf();
  • schnell rennen();
  • Getbackground ();
Variablen Lokale Variablen, Instanzvariablen und Klassenvariablen sind ebenfalls in geschrieben Lowercamelcase. Variablennamen sollten nicht mit Unterstrich beginnen (_) oder Dollar Zeichen ($) Charaktere, obwohl beide erlaubt sind. Dies steht im Gegensatz zu anderen Konventionen codieren Dieser Zustand, in dem unterstrichen werden, sollte verwendet werden, um alle Instanzvariablen zu präfixen.

Variablennamen sollten kurz und dennoch aussagekräftig sein. Die Wahl eines variablen Namens sollte sein mnemonisch - Das heißt, dem lässigen Beobachter die Absicht seiner Verwendung anzuzeigen. Ein-Charakter-Variablennamen sollten bis auf temporäre "Wegwerf" -Variablen vermieden werden. Bonbon für temporäre Variablen sind I, J, K, M und N für Ganzzahlen; C, D und E für Charaktere.

  • int i;
  • Char C;
  • Mywidth schweben;
Konstanten Konstanten sollten in Großbuchstaben geschrieben werden, die durch Unterstriche getrennt sind. Konstante Namen können gegebenenfalls auch Ziffern enthalten, jedoch nicht als erster Zeichen.
  • static final int MAX_PARTICIPANTS = 10;

Java -Compiler erzwingen diese Regeln nicht, aber es kann nicht zu Verwirrung und fehlerhaftem Code führen. Zum Beispiel, widget.expand () und Widget.expand () implizieren signifikant unterschiedliche Verhaltensweisen: widget.expand () impliziert eine Aufruf zur Methode erweitern() In einer Instanz namens namens Widget, wohingegen Widget.expand () impliziert eine Anrufung auf die statische Methode erweitern() im Unterricht Widget.

Ein weit verbreiteter Java -Codierungsstil bestimmt das Uppercamelcase wird benutzt für Klassen und Lowercamelcase wird benutzt für Instanzen und Methoden.[24] Diese Verwendung erkennen, einige andere Ides, wie zum Beispiel FinsternisImplementieren von Verknüpfungen basierend auf Kamelcase. Zum Beispiel in Eclipse's Inhaltshilfe Feature, das Eingeben nur die Buchstaben in den oberen Fällen eines Camelcase-Wortes schlägt einen passenden Klasse- oder Methodennamen vor (z. B. Eingabe von "NPE" und aktivierender Inhaltsassistent könnte dies vorschlagen NullPointerexception).

Initialismus von drei oder mehr Buchstaben sind Kamelcase anstelle von Großbuchstaben (z. B.,, Parsedbmxmlfromipaddress Anstatt von Parsedbmxmlfromipaddress). Man kann die Grenze auch auf zwei oder mehr Buchstaben festlegen (z. Parsedbmxmlfromipaddress).

JavaScript

Die integrierten JavaScript-Bibliotheken verwenden dieselben Namenskonventionen wie Java. Datentypen und Konstruktorfunktionen verwenden oberes Kamelfall (Regexp, Typeerror, Xmlhttprequest, Domobject) und Methoden verwenden ein niedrigeres Kamelfall (GetElementById, GetElementsByTagnamens, CreatecdataSektion). Um konsequent zu sein, befolgen die meisten JavaScript -Entwickler diese Konventionen.[27] Siehe auch: Douglas Crockfords Konventionen

Lispeln

In den meisten Fällen übliche Praxis Lispeln Dialekte sollen Striche verwenden, um Wörter in Kennungen wie in zu trennen mit geöffneter Datei und Make-Hash-Tisch. Dynamische Variablennamen starten und enden mit Sternchen: *Kartenwände*. Konstantennamen werden durch Pluszeichen gekennzeichnet: +MAP-Größe+.[28][29]

.NETZ

Microsoft .net Empfohlen Uppercamelcase, auch bekannt als Pascalcasefür die meisten Kennungen. (Lowercamelcase wird empfohlen für Parameter und Variablen) und ist eine gemeinsame Konvention für die .NET -Sprachen.[30] Microsoft empfiehlt ferner, dass kein Typ -Präfix -Tipps (auch bekannt als bekannt als Ungarische Notation) werden verwendet.[31] Anstatt ungarische Notation zu verwenden, wird empfohlen, den Namen mit dem Namen der Basisklasse zu beenden. LoginButton Anstatt von Btnlogin.[32]

Ziel c

Ziel c hat einen gemeinsamen Codierungsstil, der seine Wurzeln in den Wurzeln hat Smalltalk .

Top-Level-Entitäten, einschließlich Klassen, Protokolle, Kategorien sowie C-Konstrukte, die in Objektiv-C-Programmen wie globalen Variablen und Funktionen verwendet werden, befinden sich in Uppercamelcase mit einem kurzen All-Oppercase-Präfix, der den Namespace bezeichnet, wie Nsstring, Uiappdelegate, NSApp oder Cgrectmake. Konstanten können optional mit einem Kleinbuchstaben -Buchstaben "k" vorangestellt werden KCFBOOLEANTRUE.

Instanzvariablen eines Objekts verwenden LowerCamelcase, das mit einem Unterstrich vorangestellt ist, wie _delegieren und _Tabellenansicht.

Methodennamen verwenden mehrere LowerCamelcase -Teile, die durch Kolons getrennt sind, die Argumente abgrenzen, wie: Anwendung: didfinishlaunchingwithoptions:, StringwithFormat: und läuft.

Pascal, Modula-2 und Oberon

Wirthische Sprachen Pascal, Modula-2 und Oberon verwenden im Allgemeinen im Allgemeinen Aktiviert oder Uppercamelcase Kennungen für Programme, Module, Konstanten, Typen und Verfahren und Kleinbuchstaben oder Lowercamelcase Kennungen für Mathematikkonstanten, Variablen, formale Parameter und Funktionen.[33] Während einige Dialekte Unterstriche und Dollarschilder in Kennungen unterstützen, ist der Snake -Fall und der Makro -Fall eher auf die Verwendung in fremden API -Schnittstellen beschränkt.[34]

Perl

Perl Nimmt einige Hinweise aus seinem C -Erbe für Konventionen. Lokal abgeschottete Variablen und Unterroutinennamen sind Kleinbuchstaben mit Infix -Unterstrichen. Unterroutinen und Variablen, die als privat behandelt werden sollen, werden mit einem Unterstrich vorangestellt. Paketvariablen sind Titelgehäuse. Deklarierte Konstanten sind alle Kappen. Paketnamen sind Camel -Fall mit Ausnahme von Pragmata - e.g., strikt und mro- Was sind Kleinbuchstaben.[35] [36]

Php

Php Empfehlungen sind in PSR-1 (enthaltenPHP -Standardempfehlung 1) und PSR-12.[37] Laut PSR-1 sollten Klassennamen in Pascalcase sein, Klassenkonstanten sollten sich in macro_case befinden, und Funktions- und Method-Namen sollten in Kamelcase sein.[38]

Python und Ruby

Python und Rubin Beide empfehlen Uppercamelcase für Klassennamen, Captionized_with_underscores für Konstanten und lockiecase_separated_by_underscores für andere Namen.

In Python, wenn ein Name sein soll "Privatgelände"Es wird durch ein oder zwei Unterstriche vorangestellt (in Python ist es mehr oder weniger ein Hack). Private Variablen werden in Python nur durch Konvent ändert das Verhalten in Klassen in Bezug auf Nennen Sie Mangling. Präfixing und Das Suffix mit doppelten Unterstrichen ist für "magische Namen" reserviert, die ein besonderes Verhalten in Python -Objekten erfüllen.[39]

R

Es gibt zwar keinen offiziellen Leitfaden für RDer Tidyverse-Style Guide von R-Guru Hadley Wickham setzt für die meisten Benutzer den Standard.[40] In diesem Handbuch wird empfohlen, Sonderzeichen in Dateinamen zu vermeiden und nur Zahlen, Buchstaben und Unterstriche für Variable- und Funktionsnamen zu verwenden, z. fit_models.r.

Raku

Raku Folgt mehr oder weniger die gleichen Konventionen wie Perl, außer dass es einem Infix -Bindestrich zulässt - oder ein Apostroph ' (oder einzelnes Zitat) innerhalb eines Kennung (aber nicht zwei in einer Reihe), vorausgesetzt, es folgt ein alphabetischer Charakter. Raku -Programmierer verwenden daher oft Kebab -Fall in ihren Kennungen; zum Beispiel,Fischfutter und Nicht das sind gültige Kennungen.[41]

Rost

Rost Empfohlen Uppercamelcase Für Typ -Aliase und Strukturen, Merkmale, Enum- und Enum -Varianten -Namen, Schreien_snake_case für Konstanten oder Statik und Snake_Case Für Variable-, Funktions- und Strukturmember -Namen.[42]

Schnell

Schnell hat seine Namenskonventionen mit jeder individuellen Freisetzung verschoben. Ein großes Update mit Swift 3.0 stabilisierte jedoch die Namenskonventionen für Lowercamelcase über Variablen und Funktionserklärungen hinweg. Konstanten werden normalerweise durch Aufschwungentypen oder konstante Parameter definiert, die ebenfalls auf diese Weise geschrieben werden. Klassen- und andere Objekttyp -Deklarationen sind Uppercamelcase.

Ab Swift 3.0 wurden klare Namensrichtlinien für die Sprache gemacht, um die API -Namens- und Erklärungskonventionen bei allen APIs Dritter zu standardisieren.[43]

Siehe auch

Verweise

  1. ^ Derek M. Jones "Operand -Namen beeinflussen die Vorrangentscheidungen des Bedieners" Ein Experiment, das die Auswirkung von Variablennamen auf die Auswahl der Operator -Vorrangsauswahl untersucht
  2. ^ Raymond, Eric S. (1. Oktober 2004). "Religiöse Themen". Das Jargon -Datei (Version 4.4.8 ed.). Abgerufen 7. November 2011.
  3. ^ Binkley, Dave; Davis, Marcia (2009). "Camelcase oder Under_Score" (PDF). 2009 IEEE 17. Internationale Konferenz zum Programmverständnis (17): 158–167. doi:10.1109/ICPC.2009.5090039. ISBN 978-1-4244-3998-0. S2CID 1450798.
  4. ^ Benennung eines Pakets
  5. ^ "CSS Referenz". Mozilla Developer Network. Abgerufen 18. Juni 2016.
  6. ^ "Stackoverflow - Wie heißt Snake_case mit Strichen?".
  7. ^ "Programmierer-wenn dies Kamelase ist, ist es-das?".
  8. ^ "Camel_snake-kebab". GitHub. September 2019.
  9. ^ UnterstrichensuscapitalandlowerCasevariablenaming
  10. ^ Jwfearn (5. September 2012). "Überarbeitungen von Jwfearns Antwort auf Wie lautet der Name für den durch Dash getrennten Fall?".
  11. ^ Lebende Clojure (2015), von Carin Meier, p. 91
  12. ^ Lodash: Kebabcase
  13. ^ a b c "Benennung - Was sind die verschiedenen Arten von Fällen?". Paketüberfluss. Abgerufen 16. August 2020.
  14. ^ "Eine kurze Liste der Programmierkonventionen" Programmiernamen ". Deanpugh.com. 20. März 2018. Abgerufen 16. August 2020.
  15. ^ "PSR-1: Basic Coding Standard-PHP-Fig". www.php-fig.org. Abgerufen 4. September 2020.
  16. ^ "Kamel-Snake-Kebab". Kamel-Snake-Kebab. Abgerufen 16. August 2020.
  17. ^ "Falsches Code schau falsch aus". Joel über Software. 11. Mai 2005.
  18. ^ "3.2.1 Namen - Kapitel 3 - ADA 95 Qualitäts- und Stilhandbuch".
  19. ^ "ISO/IEC 9899: 1999 Programmiersprachen - C". ISO.
  20. ^ "ISO/IEC 14882: 2011 Informationstechnologie - Programmiersprachen - C ++". ISO.
  21. ^ "Benennung von Richtlinien". Microsoft.
  22. ^ "Namen der Typ -Mitglieder". Microsoft.
  23. ^ "Effektiv Go - Die Go -Programmiersprache".
  24. ^ a b "Codekonventionen für die Java -Programmiersprache", Abschnitt 9: "Benennung von Konventionen"
  25. ^ "Netscapes Software -Codierungsstandards -Leitfaden für Java",COUT COUDSY CODING Standards Leitfaden für Java Archiviert 3. März 2009 bei der Wayback -Maschine
  26. ^ "Ambysoft Inc. Codierungsstandards für Java v17.01d"
  27. ^ Morelli, Brandon (17. November 2017). "5 JavaScript Style Guides - einschließlich Airbnb, Github & Google". Codeburst.io. Abgerufen 17. August 2018.
  28. ^ "Variablen".
  29. ^ Regeln der Namensgebung an Cliki
  30. ^ Microsoft .net Framework -Kapitalisierungsstile
  31. ^ .NET Framework Developer's Guide - Allgemeine Namenskonventionen
  32. ^ [Richtlinien für Framework Design, Krzysztof Cwalina, Brad Abrams Seite 62]
  33. ^ Modula-2-Namenskonvention
  34. ^ Ausländische API-Identifikatoren in der Modula-2-Namenskonvention
  35. ^ "Perl Style Guide".
  36. ^ "Perlmodlib - neue Perlmodule erstellen und bestehende finden".
  37. ^ "PHP Standards Empfehlungen".
  38. ^ "PSR-1: Basic Coding Standard-PHP-Fig".
  39. ^ Stilhandbuch für Python Code PEP8
  40. ^ Stilhandbuch für RCODE
  41. ^ "Allgemeine Regeln der Perl 6 -Syntax".
  42. ^ "Regeln der Namensgebung". doc.rustlang.org. Abgerufen 4. Februar 2018.
  43. ^ "Swift.org API -Designrichtlinien".

Externe Links