Was ist eine gute Namenskonvention für vars, Methoden, etc. in C++?
Ich komme aus einer der Objective-C und Cocoa Welt, wo es gibt viele Konventionen, und viele Menschen werden sagen, es macht den code schön!
Damit wird die Programmierung in C++ kann ich nicht finden, ein gutes Dokument, wie Sie diese für C++.
Standard-C++ wohl nicht so etwas wie oben, aber ich hoffe, dass ich bleiben kann, um einige der anderen SDK oder APIs wie Microsoft(?),etc) Konventionen.
Ich hoffe Ihr könnt mir mit einigen links.
Ich verspreche, dass ich downvote wer schlägt Ungarisch.
Lesen Sie Joel Spoolsky post an die Ungarische Notation, und es kann Ihre Meinung ändern. Ich Tue nicht einverstanden mit ihm, aber das posten lohnt sich dennoch, wie er erklärt, die GROßEN Missverständnis auf dieses Schema.
Ich verspreche, dass ich downvote wer empfehlen die Google-Konventionen.
Was Joel schon sagt ist gut für C, aber wenn Sie mit C++ und ernsthaft über die Dinge, die Joel schlägt vor, Sie können Holen Sie sich die compiler zu fangen, wenn man zum Beispiel versehentlich versuchen, zu konvertieren, eine Zeile in eine Spalte (die glaube ich, war das, was er als ein Beispiel verwendet).
Ich hatte es gelesen, und ich unterstütze das Ziel des "making wrong code look wrong'. Sollte ich angegeben habe, dass ich dagegen bin "Systems Hungarian", die nicht diesem Zweck dienen, oder aus anderen Gründen, die ich sehen kann.
Lesen Sie Joel Spoolsky post an die Ungarische Notation, und es kann Ihre Meinung ändern. Ich Tue nicht einverstanden mit ihm, aber das posten lohnt sich dennoch, wie er erklärt, die GROßEN Missverständnis auf dieses Schema.
Ich verspreche, dass ich downvote wer empfehlen die Google-Konventionen.
Was Joel schon sagt ist gut für C, aber wenn Sie mit C++ und ernsthaft über die Dinge, die Joel schlägt vor, Sie können Holen Sie sich die compiler zu fangen, wenn man zum Beispiel versehentlich versuchen, zu konvertieren, eine Zeile in eine Spalte (die glaube ich, war das, was er als ein Beispiel verwendet).
Ich hatte es gelesen, und ich unterstütze das Ziel des "making wrong code look wrong'. Sollte ich angegeben habe, dass ich dagegen bin "Systems Hungarian", die nicht diesem Zweck dienen, oder aus anderen Gründen, die ich sehen kann.
InformationsquelleAutor nacho4d | 2010-09-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tun, was Sie wollen, solange seine minimal, konsistent und nicht zu brechen alle Regeln, die.
Ich persönlich finde die Boost-Stil einfachsten; es entspricht dem standard-Bibliothek (also ein einheitliches look-code) und ist einfach. Ich persönlich Wende auf
m
undp
Präfixe der Mitglieder und der Parameter, bzw. geben:Dass.
(Und wie ich schon sagte in Kommentaren nicht erlassen, die Google-Style Guide für deinen code, es sei denn, es ist etwas so belanglosen wie Namenskonvention.)
Meins ist ähnlich. Der einzige Unterschied. Typen beginnen mit einem Großbuchstaben. Alles andere beginnt mit einem Kleinbuchstaben (nur meine Macke).
Ha, ich würde das nicht passieren, die Gelegenheit. 🙂 Ich verwendet, um religiös zu verteidigen, dass Klammern immer, aber heute finde ich es den Reiniger weglassen. (In der Regel die einzelnen Aussagen sind
return;
oder etwas trivial).So muss ich, wenn ich bin allein zu arbeiten, aber wenn ich habe, um meine Arbeit, die ich lieber so explizit wie möglich, einschließlich für einzeilige Blöcke. Aber ich setze Sie inline:
if (cond) { return xxx; }
wenn möglich.Ich Stimme mit Matthieu. Verwenden Sie immer Klammern!! Wenn ich war jung und naiv, ich hasste Klammern, die ich dachte, unübersichtlich meiner codez. Wenn ich jetzt älter und klüger, ich Lebe von der Regel, immer meine Absichten klar. Setzen Klammern um die one-Liner ist ein Teil der genau das zu tun.
InformationsquelleAutor GManNickG
Gibt es wahrscheinlich so viele Namenskonventionen, wie es Individuen, die Diskussion wird endlos (und steril), um die Klammer-Stil verwenden und so weiter.
So habe ich 2 Ratschläge:
Der rest ist bis zu Ihnen.
+1 reservierter Bezeichner, nur denn der compiler nicht, benutze es nun jetzt nicht bedeuten, dass die nächste version nicht
InformationsquelleAutor Matthieu M.
Ich eigentlich verwenden oft Java-Stil: PascalCase für Typ-Namen, camelCase für Variablen und Funktionen, CAPITAL_WORDS für Präprozessor-Makros. Ich bevorzuge, die über die Boost/STL-Konventionen, weil Sie nicht haben, um suffix-Typen mit
_type
. E. g.statt
Dies hat den zusätzlichen Vorteil, dass StackOverflow code formatter erkennt
Size
als Typ name 😉InformationsquelleAutor Philipp
Befolgen wir die Richtlinien auf dieser Seite: C++ Programming Style Guidelines
Ich würde auch empfehlen, die Sie Lesen Die Elemente der C++ - Stil von Misfeldt et al., das ist ein ganz ausgezeichnetes Buch zu diesem Thema.
ja sicher.
Dank! sehr geschätzt! (sollte das Leben leichter machen auch)!. Übrigens, gibt es eine Namensnennung soll ich unten den text usw? - wenn ja, an wen ich Schreibe?
Ich bin nicht angegliedert, die Seite/Dokument. Ich würde vorschlagen, mit einem link auf die Seite, wenn Sie es hilfreich finden, und entscheiden, es zu benutzen.
InformationsquelleAutor missingfaktor
Adresse der umfassenderen Frage von style guides, die ich vorschlagen, Kommissionierung ein und bleibe dabei.
Die Google style guide ist sehr ausführlich/umfassend, so dass es eine gute Wahl.
Einer gemeinsamen Konvention nur für die Benennung ist:
camelCase
für alle Namen (außer Konstanten)CamelCase
ALL_CAPS
mit Unterstrich trennen WörtercamelCase()
mCamelCase
Es ist wirklich bis zu Ihnen oder alternativ die Menschen, die Sie arbeiten für/mit oder die Universität Sie studieren an.
Für einen detaillierten Blick auf eine Vielzahl von style guides oder Begründungen hinter Ihnen, check-out Pragmatische Programmierer von Andrew Hunt und David Thomas.
Eigentlich, IMHO, Detail ist in der Nähe gute. Wenn nicht die GSC, dann finden Sie weitere detaillierte, (das ist gut) und diese verwenden. Das wichtigste ist, sein consistant. Und eine ausführliche Anleitung hilft dabei. Also, wenn der GSC ist shcokingly dann wirklich schlecht, die anderen finden und dabei zu bleiben.
InformationsquelleAutor Lyndon White
Für was es Wert ist, Bjarne Stroustrup, der ursprüngliche Autor von C++ hat seine eigenen Lieblings-Stil, beschrieben hier: http://www.stroustrup.com/bs_faq2.html
InformationsquelleAutor Nemanja Trifunovic
Während viele Menschen vorschlagen, mehr oder weniger strenge Die Ungarische notation Varianten (beängstigend!), für die Benennung Vorschläge, ich würde vorschlagen, Sie nehmen einen Blick auf Google C++ Coding Guidelines. Das ist vielleicht nicht die beliebtesten Namenskonventionen, aber es ist zumindest ziemlich komplett. Abgesehen vom sound, naming conventions, es gibt einige nützlichen Richtlinien, jedoch viel es sein sollte mit einem Körnchen Salz (Ausnahme Verbot zum Beispiel, und die Tendenz, Sie zu halten Weg von der modernen C++ coding style).
Obwohl ich persönlich, wie die extreme low-tech-convention Stil der STL und Boost ;).
Ich Stimme zu, Google-Richtlinien gemeint sind, speziell rückwärts kompatibel mit Ihrer vorhandenen C-code-Basis (wie ist explizit erwähnt, in den Richtlinien). Für ein neues Projekt, Sie sind das Schlimmste, was passieren könnte.
das ist es, was ich anfangs auch so gedacht, aber sorgfältige Untersuchung des Dokuments machte mir klar, dass es schlägt eine gute balance zwischen dem verlassen etwas Raum zum atmen zu vor-und (noch wichtiger) nicht so newbie-Entwickler pusten sich auf. Sie können nicht damit rechnen, dass ein team von guten modernen C++ - Programmierer überall-und sogar eine schlechte coder ruinieren kann eine gute Codebasis, ohne strengen Richtlinien...
könnte Sie klar, was Sie ganz schrecklich finde in der Google-Richtlinien ? Ich lese es jetzt und einige Ratschläge scheinen ziemlich gut zu sein.
Ich bin damit einverstanden, dass die Ausnahmen Klausel ist lächerlich 😉
InformationsquelleAutor Kornel Kisielewicz
Konsistenz und Lesbarkeit (selbst-dokumentierenden code) sind wichtig. einige Hinweise (wie Fall ist) können und sollten genutzt werden, um Kollisionen zu vermeiden, und um anzugeben, ob eine Instanz erforderlich ist.
einer der besten Praktiken habe ich an die Verwendung von code-Formatierer (astyle und uncrustify sind 2 Beispiele). code-formatter zerstören können Ihre code-Formatierung - konfigurieren Sie den Formatierer, und lassen Sie es seine Aufgabe. im ernst, vergessen Sie die manuelle Formatierung und sich in der Praxis mit Ihnen. Sie sparen eine Menge Zeit.
wie bereits erwähnt, werden sehr anschaulich mit Namensgebung. auch, seien Sie sehr spezifisch mit scoping (Klassen-Typen/data/namespaces/anonyme namespaces). im Allgemeinen mag ich wirklich viel von java-common schriftlicher form - das ist eine gute Referenz und ähnlich zu c++.
für spezielle Darstellung/Benennung, dies ist ein kleines Beispiel ähnlich zu dem, was ich verwenden (Variablen/Argumente sind lowerCamel und dies beschreibt nur einen Teil der Sprache Funktionen):
Abneigung Kollisionen 🙂
InformationsquelleAutor justin
Gibt es viele verschiedene sytles/Konventionen, die Menschen benutzen, wenn die Codierung C++. Zum Beispiel, einige Leute bevorzugen die Trennung von Wörtern in Versalien (myVar oder MyVar) oder mit Unterstrichen (meine_variable). In der Regel, Variablen, verwenden Sie Unterstriche sind in alle Kleinbuchstaben (aus meiner Erfahrung).
Es ist auch ein coding style, Ungarisch aufgerufen, was ich glaube ist von microsoft verwendet. Ich persönlich glaube, dass es ist eine Verschwendung von Zeit, aber es kann sich als nützlich erweisen. Dies waren die Namen der Variablen sind gegeben, kurz Präfixe wie ich, oder f Hinweis die Variablen-Typ. Zum Beispiel: int iVarname, char* strVarname.
Es wird angenommen, dass Sie am Ende einen struct/Klasse name mit _t, es zu unterscheiden von einem Variablen Namen. E. g.:
Es ist auch allgemein akzeptiert, fügen Sie ein anbringen, um anzuzeigen, Zeiger, wie pVariable oder variable_p.
In allen, es gibt wirklich keinen einzigen standard, aber viele. Die Entscheidungen, die Sie machen, über die Benennung der Variablen spielt keine Rolle, so lange, wie es verständlich ist, und vor allem konsistent. Konsistenz, Konsistenz, KONSISTENZ! (versuchen Sie, dreimal!)
Und wenn alle Stricke reißen, google es.
Es ist für Klassen, die als Datentypen.
die Klassen sind nicht?
wahrscheinlich Klassen, die Sie als domain-Objekte (sehr späte Antwort).
std::string
ist ein Datentyp (und ähnlich verwendet, umint
oderdouble
);bank_account
ist ein domain-Objekt (und ist nicht).InformationsquelleAutor Alexander Rafferty
Ist es nicht wirklich wichtig. Nur stellen Sie sicher, dass Sie den Namen Ihrer Variablen und Funktionen anschaulich. Ebenfalls konsistent sein.
Jetzt schlimmer, als zu sehen, einen code wie diesen:
Edit: Wie bereits von meinen Kommentator, dass die Konsistenz beibehalten werden muss für ein ganzes team. Als solches ist es egal, WELCHE Methode Sie wählen, wie lange, dass wird die Konsistenz. Es gibt keine richtige oder falsche Methode, aber. Jedes team in dem ich gearbeitet habe hat hatte andere Ideen, und ich habe angepasst.
Nun, es SPIELT KEINE Rolle, wie lange Ihre aussagekräftigen und konsistenten ... ja in einem team, dass heißt die Pflege, die Konsistenz über das gesamte team. Ich update meine Antwort.
InformationsquelleAutor Goz
nicht annähernd so präzise, wie der link, den Sie zur Verfügung gestellt: aber die folgenden Kapitel 14 - 24 helfen 🙂 hehe
ref: http://www.amazon.com/Coding-Standards-Rules-Guidelines-Practices/dp/0321113586/ref=sr_1_1?ie=UTF8&s=books&qid=1284443869&sr=8-1-catcorr
doooh... du hast Recht. ich dachte "strukturelle" Konvention statt Namenskonvention, weil ich gar nicht versucht, zu verstehen, Ihre Frage und Lesen den link, den Sie zur Verfügung gestellt.
Dieses Buch ist über Elemente der Programmierung Stil, die helfen, die Qualität des Codes zu verbessern und irrelevante details wie Namenskonventionen sind zusammengefasst in Punkt 0: Don ' T Sweat Die Kleinen Dinge (oder: Wissen Sie, Was Nicht Zu Standardisieren). Es wird nicht helfen, wenn Sie fühlen die Notwendigkeit zu standardisieren, die details spielen keine Rolle.
InformationsquelleAutor antoniuslin