Seit der High School wurde mir beigebracht, wie man solche Variablen definiert:
int _a;
oder
int __a;
sollte als schlechte Praxis angesehen werden, da dies eventuell Compiler rätseln würde, die Variablen verwenden, die mit einem Unterstrich beginnen, um temporäre Variablen zu benennen.
Soweit ich weiß, ist dies der Grund, warum manche Leute den Unterstrich am Ende des Namens gerne verschieben, wie zum Beispiel:
int a_;
Ich sehe jedoch überall viel Code, der Unterstrich-Startvariablen verwendet. Und dieser Code lässt sich sowohl mit Visual Studio 2010 als auch mit g ++ 4.x recht gut erstellen.
Ich frage mich also: Ist das heutzutage kein Thema? Sind moderne Compiler klüger in Bezug auf Namenskonventionen?
c++
programming-practices
naming-standards
Emiliano
quelle
quelle
Antworten:
Sie verstehen anscheinend falsch, warum Präfix-Unterstriche eine schlechte Praxis sind. Um es kurz zu machen: Der C- und C ++ - Standard reserviert dieses Präfix für Implementierungsdetails, beispielsweise für die Standardbibliotheksimplementierung. (Beachten Sie, dass _ und __ nicht für dieselben Dinge reserviert sind, siehe Kommentare)
Selbst wenn sich die Namen im Gültigkeitsbereich befinden (Namespace, Klasse usw.), kann es einige globale Namen geben, insbesondere Makros, die dieses Präfix verwenden und Ihren Code möglicherweise unbemerkt beschädigen, wenn Sie sie auch verwenden.
Grundsätzlich ist es also die meiste Zeit sicher, dieses Präfix zu verwenden, ABER wenn Sie es nicht verwenden, haben Sie eine 100% ige Garantie, dass Ihre Benennung niemals mit den Implementierungsnamen in Konflikt steht.
Verwenden Sie daher im Zweifelsfall dieses Präfix nicht.
quelle
_limit
ist dies kein Fehler, aber als globale Funktion. Ich denke, es ist besser, eine einfache Richtlinie zu haben, die besagt, dass "ausnahmslos keine führenden Unterstriche verwendet werden", als eine Richtlinie, die sie in bestimmten Kontexten und in anderen nicht zulässt. Aber wir können uns darauf einigen. Und um ganz klar zu sein, ich habe keine Probleme mit Unterstrichen an anderen Stellen als am Anfang.Die Verwendung von zwei Unterstrichen ist definitiv schlecht - das ist für compilerspezifische Implementierungsdetails reserviert. Dies gilt nicht für die Verwendung eines Unterstrichs.
Einige Leute hassen Unterstriche. Ob Sie etwas anrufen
m_index
oderhighest_price
oder_a
- sie verabscheuen es. Ich habe vor 25 Jahren mit jemandem zusammengearbeitet, der mir von einem bestimmten IBM-Drucker (einem sehr beliebten) erzählte, der mehr Zeilen auf die Seite passt, indem er das untere Pixel in jeder zweiten Zeile weglässt. Dies war in Ordnung für Memos oder für die Ausgabe großer Zahlenmengen und dergleichen, hatte jedoch den Effekt, dass der Code die Hälfte Ihrer Unterstriche unsichtbar machte. (Ja, wirklich!) Menschen aus dieser Generation haben im Allgemeinen den irrationalen Unterstrich-Hass, entweder durch die Interaktion mit diesem Drucker oder durch die Arbeit mit jemandem, der ihnen in den Sinn kommt, dass Unterstriche nicht verwendet werden dürfen.Die meisten Menschen mit gemischtem Fall finden (eine Option , die wir haben in nicht sagen, Fortran) einen lesbaren Ansatz:
mIndex
,HighestPrice
,a
steht ziemlich gut zu den früheren unterstrichene Beispielen auf. Ich werde Ihnen zwei Regeln geben:_limit
für Funktionsparameter,m_limit
für Mitgliedsvariablen, verwenden Sie niemals Unterstriche, Kamelbuchstaben, schreiben Sie jedes Wort groß, Ungarisch, etwas ) und halten Sie sich daran. Gehen Sie nicht manchmal mit Unterstrichen am Anfang, manchmal am Ende, manchmal ohne Verwendung und fünf verschiedenen Gehäusekonventionen herum. Seien Sie konsequent.Der betreffende Drucker ist längst verschwunden. Wenn Sie jeweils einen Unterstrich verwenden möchten, können Sie dies gerne tun. Aber verstehen Sie, es gibt immer noch unterstreichende Hasser.
quelle