Kerli hat geschrieben:So ganz gefällt mir der Codingstandard noch nicht. Erstens ist er teilweise unnötig mehrdeutig und auch noch etwas unvollständig:
Wo ist er mehrdeutig?
Kerli hat geschrieben:Objektorientierte Symbole (zu einer Klasse zugehörig) werden groß mit Camelcase geschrieben, das gilt für Konstanten, Variablen, wie auch für Methoden.
Warum? Ich finde es deutlich übersichtlicher wenn man auf den ersten Blick sieht ob es sich um eine Variable, einen Typ, eine Methode oder eine Konstante handelt.
Wo ist der Unterschied?
Die Frage mag Dir merkwürdig vorkommen, aber Variable, Konstante, Methode oder Typ - in meinen Augen ist da kein Unterschied.
Variablen können const sein, dann sind es Konstanten. Watt nu?
Wenn Parameter const übergeben werden, so sind es lokale Konstanten, die als Parameter reinkommen. Klein, Groß, komplett in Kapitalen?
Eine Methode ist schlussendlich auch nichts anderes als eine Variable, eben ein Zeiger auf eine Funktion. Variable, Konstante und Funktion haben einen Typ. Wenn ein Typ in ein Template kommt, so er eine Konstante. Wenn ich den Typ dynamisch abfrage, so ist er eine Variable. Wenn der Typ ein Funktor ist, so ist die Variable eine Funktion. Ist ein Funktionszeiger eine Funktion oder eine Variable? Und wenn er const ist, dann ist er ein MACRO?
Hier verschwimmen Grenzen. Im Nebel Grenzen zu fordern führt in meinen Augen dazu, dass man sich im Grenzzaun verheddert. Ich unterscheide zwischen lokal/statisch und Member/Dynamisch, bzw. PRÄPROZESSOR. Ansonsten kommen in allen Fällen Werte eines Datentyps zurück - egal, ob ich das als Funktion, Typ, Variable oder Konstante angeben habe.
Grundsätzlich ist bei mir soviel wie möglich konstant. Entsprechend müsste ich fast alles groß schreiben.
Kerli hat geschrieben:Nachdem auch noch Typen und in bisherigen Codeteilen Namespaces auch Camelcase benannt werden ist hier eigentlich gar keine Unterscheidung möglich. Ich hab einmal begonnen in meine Wiki meinen
Codingstandard zu dokumentieren. Bis jetzt hat er sich eigentlich als recht gut und leicht lesbar bewährt.
Lese ich mir gerne durch.
Kerli hat geschrieben:Bei Funktionen (außerhalb von Klassen) sind mir auch zwei Benennungsmöglichkeiten aufgefallen. Einerseits zb. 'dosomething' wo alles klein geschrieben ist und andererseits zb 'doNothing' mit Camelcase und am Anfang klein. Ich würde letzteres bevorzugen.
Wo gibt es 'dosomething()'? Das wäre ein Fehler.
Kerli hat geschrieben:Was ist mit Namespaces? Im bisher eingecheckten Code ist es entweder Camelcase oder komplett in Großbuchstaben. Normalerweise bevorzuge ich komplette Kleinschreibung damit man es von Typen unterscheiden kann. So weiß man bei gui::SOME_CONSTANT sofort das diese Konstante aus dem Namespace gui kommt und nicht wie GUI::SOME_CONSTANT aus der Klasse GUI.
Camecase, Abkürzungen bleiben groß.
Kerli hat geschrieben:Und was ist mit Template Parametern? Mein Vorschlag gleich wie Klassen benennen. Also vollständig Camelcase.
In meinem Verständnis sind es lokale Variablen => klein.
Kerli hat geschrieben:Ein Punkt der eventuell auch noch zu ergänzen wäre ist das Fangen von Exceptions. Das sollte immer per Referenz passieren, da nur so Polymorphismus korrekt funktioniert und man Exceptions bei Bedarf auch erweitern kann. Außerdem sollten alle neuen Exceptions von std::exception bzw. einer davon abgeleiteten Klasse ableiten (zb. std::runtime_error).
Lass uns den Exception-Bereich in cpp: erstmal fertig schreiben...
Dass Exceptions als Referenz eingefangen werden kann man gerne dazu als Hinweis schreiben.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.