Ich habe gerade angefangen, ReSharper (für C #) zu verwenden, und ich mag es, wenn der Code nach Finder riecht. Er zeigt mir einige Dinge über mein Schreiben, die ich vor langer Zeit beheben wollte (hauptsächlich Konventionen für die Benennung von Variablen).
Es hat mich veranlasst, einige meiner Namenskonventionen für Methoden und Instanzvariablen zu überdenken. ReSharper schlägt vor, dass die Instanzvariable ein kleinerer Kamelfall ist und mit einem Unterstrich beginnt. Für eine Weile wollte ich alle meine lokalen Variablen kleiner machen, aber ist der Unterstrich notwendig? Finden Sie es bequem? Ich mag diese Konvention nicht, aber ich habe sie auch noch nicht ausprobiert. Wie ist Ihre Meinung dazu?
Das zweite, was mich zu einer Neubewertung veranlasste, waren meine Namenskonventionen für GUI-Ereignishandler. Normalerweise verwende ich den VS-Standard von ControlName_Action und meine Steuerelemente verwenden normalerweise die ungarische Notation (als Suffix, um im Code zu klären, was für den Benutzer sichtbar ist und was nicht, wenn es sich um ähnlich benannte Variablen handelt), sodass ich am Ende OK_btn_Click ( ), wie ist deine Meinung dazu? Sollte ich der ReSharper-Konvention erliegen oder gibt es andere gleichermaßen gültige Optionen?
In Gedenken an
Eine Sache, die ich an der Verwendung des Unterstrichs sehr mag, ist, dass sie die Verwendung von "this" drastisch reduziert.
Erwägen:
ohne den Unterstrich müssten Sie schreiben:
was möglicherweise den subtilen Fehler einführt von:
Darüber hinaus ist die Code-Vervollständigung sauberer, da Sie durch einfaches Binden des Unterstrichs nur eine Liste der privaten Felder erhalten, während Sie mit "this" eine Liste von allem erhalten.
In Gedenken an
In den Framework Design Guidelines: Konventionen, Idome und Muster für wiederverwendbare .NET-Bibliotheken heißt es:
Wenig Raum für Mehrdeutigkeiten lassen :)
quelle
this.size
ist weitaus klarer als_size
. Die Verwendung des unterstrichenen Namens verhindert den subtilen Fehler nicht. Sie können sich dennoch eine Größe zuweisen, obwohl Ihr Compiler dies Ihnen hoffentlich mitteilen wird.this.size
und_size
ist die Konsistenz. Mitthis.size
ist, dass es optional ist. Wenn zum Beispiel ein anderes privates Feld aufgerufen wurdename
, muss es nichtthis.name
im Code verwendet werden, ich könnte es genauso einfachname
ohne Konflikte verwenden. Weilthis
manchmal verwendet werden kann und nicht zu anderen Zeiten, ist die Verwendungthis
minderwertig. Auf der anderen Seite gibt es keine Unklarheiten mit_
...Konsistenz ist wirklich der Schlüssel. Das und Klarheit, dh seien Sie nicht kryptisch oder versuchen Sie, das Tippen zu sparen, indem Sie alles abkürzen. Intellisense ist Ihr Tipp-Sparer, keine kryptischen (aber kurzen!) Namen.
quelle
order.Size()
(im Gegensatz zuorder.getSize()
), aber da andere Bibliotheken Getter und Setter verwenden, ist mein Code nicht konsistent.In C # ist das Starten eines geschützten oder öffentlichen Namens mit einem Unterstrich gegen die Common Language Specification. Es ist nur bei privaten Mitgliedern richtig.
Von MSDN:
Siehe: http://msdn.microsoft.com/en-us/library/12a7a7h3.aspx
Hier können Sie die Warnung zum Unterstrich lesen:
Siehe: http://msdn.microsoft.com/en-us/library/81ed9a62.aspx
Geschützte Mitglieder sind problematisch, da Sie von Klassen erben können, die in einer anderen Sprache geschrieben sind.
Aber vielleicht ist es in Ihrem Fall kein Problem, wenn Sie keinen CLS-kompatiblen Code benötigen.
quelle
Ich mag die Unterstriche. Sie wissen auf den ersten Blick, dass die Variable ein Klassenmitglied und privat ist.
Sicher, die IDE kann Ihnen das sagen, wenn Sie mit der Maus darüber fahren, aber der "erste Blick" ist nicht zu übertreffen. Sie wissen, was eine lokale Variable ist und was eine Mitgliedsvariable ist, nur mit Ihren Augen. Kein Scrollen oder Bewegen der Maus erforderlich.
Sie können das Schlüsselwort "this" verwenden, aber _ ist kürzer, um die horizontale Scanbarkeit zu verbessern. Beschreibende Namen sind normalerweise erwünscht, aber wenn etwas eine etablierte Konvention ist, ist es besser, 1 Zeichen zu haben. Verwenden Sie beispielsweise den Buchstaben i als Index, wenn Sie ein Array durchlaufen. Da es eine etablierte Konvention ist, dass i ein Index ist, profitieren Sie von der Scanbarkeit, ohne sich zu fragen, was "i" bedeutet.
quelle
Ich stimme im Allgemeinen dem zu, was von anderen gesagt wird, aber wenn es um Werkzeuge und Werkzeugketten geht, bin ich faul und mag ein einfaches Leben. Ich finde, das Leben ist oft einfacher, es einfach so zu machen, wie sie es vorschlagen. Die Gründe sind
Ich nehme also an, wenn Sie einen gültigen Grund finden, die Tools, für die Sie gerade ein Vermögen ausgegeben haben, neu zu konfigurieren, tun Sie dies auf jeden Fall. Wenn Sie die Änderung nicht rechtfertigen können, tun Sie dies nicht.
Denken Sie daran, dass jede Änderung laufende Kosten (real und versteckt) verursacht. Je weniger es gibt, desto geringer sind die Kosten. Zum Beispiel - dieser neue Typ, den ich erwähnt habe - bedeutet keine Änderung, dass er ihr Handbuch lesen kann. Neu konfigurieren - Sie müssen das Addendum schreiben, es mit anderen Sachen aufbewahren, es zurückziehen und ihn dazu bringen, es zu lesen, nachdem Sie das Handbuch gelesen haben. Vielleicht kein Problem für einen 2-Mann-Laden, aber was ist mit einem 100-Mann-Laden?
quelle
Die beiden Regeln, nach denen Sie fragen, werden am Anfang der privaten Feldnamen und Methodennamen unterstrichen und in C # -Entwicklungskreisen allgemein als Norm angesehen. Durch die Anpassung an diese Konventionen wird Ihr Code für andere Entwickler sofort verständlicher, da dies die Einstellung ist, in der sie gewohnt sind, zu arbeiten.
Das Suffix von Label, RadioButton usw. für Ihre Steuerelemente wird im Allgemeinen ebenfalls als Norm angesehen. Für ein einzelnes Konzept (z. B. ein Label und eine TextBox) sind häufig mehrere Steuerelemente vorhanden, und dieses Suffix ist sehr nützlich. Die wahre ungarische Notation wurde vor langer Zeit aufgegeben, weil sie in etwas verfälscht wurde, das ihre ursprüngliche Absicht nicht ausdrückt. Dies war der Kontext über die Variable, nicht welcher Typ, welche Größe usw.
quelle
In meinem Fall hilft die Verwendung von Camelcase und Unterstrichen bei der Beschreibung (read: long) von Variablennamen und der Code-Vervollständigung. Ich bin mir nicht ganz sicher, wie die automatische Vervollständigung von Visual Studio funktioniert, aber in QtCreator und in geringerem Maße in Eclipse kann man beispielsweise tippen
und habe es erweitert auf
Spart ein bisschen Tippen, falls Sie Namen wie haben
was ich im "beschreibenden Namensmodus" tendenziell produziere.
Mithilfe von Unterstrichen kann ich bestimmen, welcher Name automatisch vervollständigt werden soll
oder
Hoffe meine Erklärung ist klar genug :)
quelle