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
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 Uppercamelcase mit 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). |
|
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. |
|
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. |
|
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. |
|
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
- Kategorie: Benennung von Konventionen
- Checkstyle
- Konventionen codieren
- Liste der Tools für die statische Codeanalyse
- Namespace
- Namenskonvention
- Sigil (Computerprogrammierung)
- Syntax (Programmiersprachen)
Verweise
- ^ Derek M. Jones "Operand -Namen beeinflussen die Vorrangentscheidungen des Bedieners" Ein Experiment, das die Auswirkung von Variablennamen auf die Auswahl der Operator -Vorrangsauswahl untersucht
- ^ Raymond, Eric S. (1. Oktober 2004). "Religiöse Themen". Das Jargon -Datei (Version 4.4.8 ed.). Abgerufen 7. November 2011.
- ^ 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.
- ^ Benennung eines Pakets
- ^ "CSS Referenz". Mozilla Developer Network. Abgerufen 18. Juni 2016.
- ^ "Stackoverflow - Wie heißt Snake_case mit Strichen?".
- ^ "Programmierer-wenn dies Kamelase ist, ist es-das?".
- ^ "Camel_snake-kebab". GitHub. September 2019.
- ^ UnterstrichensuscapitalandlowerCasevariablenaming
- ^ Jwfearn (5. September 2012). "Überarbeitungen von Jwfearns Antwort auf Wie lautet der Name für den durch Dash getrennten Fall?".
- ^ Lebende Clojure (2015), von Carin Meier, p. 91
- ^ Lodash: Kebabcase
- ^ a b c "Benennung - Was sind die verschiedenen Arten von Fällen?". Paketüberfluss. Abgerufen 16. August 2020.
- ^ "Eine kurze Liste der Programmierkonventionen" Programmiernamen ". Deanpugh.com. 20. März 2018. Abgerufen 16. August 2020.
- ^ "PSR-1: Basic Coding Standard-PHP-Fig". www.php-fig.org. Abgerufen 4. September 2020.
- ^ "Kamel-Snake-Kebab". Kamel-Snake-Kebab. Abgerufen 16. August 2020.
- ^ "Falsches Code schau falsch aus". Joel über Software. 11. Mai 2005.
- ^ "3.2.1 Namen - Kapitel 3 - ADA 95 Qualitäts- und Stilhandbuch".
- ^ "ISO/IEC 9899: 1999 Programmiersprachen - C". ISO.
- ^ "ISO/IEC 14882: 2011 Informationstechnologie - Programmiersprachen - C ++". ISO.
- ^ "Benennung von Richtlinien". Microsoft.
- ^ "Namen der Typ -Mitglieder". Microsoft.
- ^ "Effektiv Go - Die Go -Programmiersprache".
- ^ a b "Codekonventionen für die Java -Programmiersprache", Abschnitt 9: "Benennung von Konventionen"
- ^ "Netscapes Software -Codierungsstandards -Leitfaden für Java",COUT COUDSY CODING Standards Leitfaden für Java Archiviert 3. März 2009 bei der Wayback -Maschine
- ^ "Ambysoft Inc. Codierungsstandards für Java v17.01d"
- ^ Morelli, Brandon (17. November 2017). "5 JavaScript Style Guides - einschließlich Airbnb, Github & Google". Codeburst.io. Abgerufen 17. August 2018.
- ^ "Variablen".
- ^ Regeln der Namensgebung an Cliki
- ^ Microsoft .net Framework -Kapitalisierungsstile
- ^ .NET Framework Developer's Guide - Allgemeine Namenskonventionen
- ^ [Richtlinien für Framework Design, Krzysztof Cwalina, Brad Abrams Seite 62]
- ^ Modula-2-Namenskonvention
- ^ Ausländische API-Identifikatoren in der Modula-2-Namenskonvention
- ^ "Perl Style Guide".
- ^ "Perlmodlib - neue Perlmodule erstellen und bestehende finden".
- ^ "PHP Standards Empfehlungen".
- ^ "PSR-1: Basic Coding Standard-PHP-Fig".
- ^ Stilhandbuch für Python Code PEP8
- ^ Stilhandbuch für RCODE
- ^ "Allgemeine Regeln der Perl 6 -Syntax".
- ^ "Regeln der Namensgebung". doc.rustlang.org. Abgerufen 4. Februar 2018.
- ^ "Swift.org API -Designrichtlinien".
Externe Links
- coding-guidelines.com hat eine PDF Das nutzt Linguistik und Psychologie, um eine Kosten/Nutzen -Analyse von Identifikator -Namensproblemen zu versuchen