Ich denke, es gibt zwei Dinge, die angesprochen werden müssen, und ich würde sie in der Tat getrennt betrachten, da sie nicht auf die gleiche Weise angegangen werden können, obwohl ich beide für wichtig halte.
- Der technische Aspekt: der darauf abzielt, riskanten oder falsch geformten Code zu vermeiden (auch wenn er vom Compiler / Interpreter akzeptiert wird)
- Der Präsentationsaspekt: der sich damit befasst, das Programm den Lesern klar zu machen
Den technischen Aspekt qualifiziere ich als Coding Standard , ebenso wie Herb Sutter und Andrei Alexandrescu mit ihren C ++ Coding Standards . Die Präsentation, die ich für den Coding Style qualifiziere , umfasst Namenskonventionen, Einrückungen usw.
Kodierungsstandard
Ein Kodierungsstandard kann, da er rein technisch ist, größtenteils objektiv sein. Als solche sollte jede Regel durch einen Grund gestützt werden. In dem Buch, auf das ich mich bezog, hat jeder Punkt:
- Ein Titel, einfach und auf den Punkt
- Eine Zusammenfassung, die den Titel erklärt
- Eine Diskussion, die das Problem des Andersseins verdeutlicht und somit die Begründung angibt
- optional Einige Beispiele, denn ein gutes Beispiel sagt mehr als tausend Worte
- optional Eine Liste von Ausnahmen, auf die diese Regel nicht angewendet werden kann, manchmal mit Umgehungen
- Eine Liste von Referenzen (andere Bücher, Websites), die diesen Punkt besprochen haben
Begründung und Ausnahmen sind sehr wichtig, da sie das Warum und Wann zusammenfassen.
Der Titel muss so eindeutig sein, dass man während der Reviews nur eine Liste der Titel (Spickzettel) haben muss, mit denen man arbeiten kann. Und gruppieren Sie die Artikel natürlich nach Kategorien, um sie leichter finden zu können.
Sutter und Alexandrescu haben es geschafft, eine Liste von nur hundert Elementen zu haben, obwohl C ++ als haarig gilt;)
Codierungsstil
Dieser Teil ist im Allgemeinen weniger objektiv (und kann ausgesprochen subjektiv sein). Hier soll die Konsistenz gewährleistet werden, da dies den Betreuern und Neuankömmlingen hilft.
Sie möchten nicht in einen heiligen Krieg eintreten, um welchen Einzug oder Klammerstil es sich hier besser handelt. Dafür gibt es Foren. In dieser Kategorie tun Sie also Dinge durch Konsens> Mehrheitsabstimmung> willkürliche Entscheidung des / der Anführer (s).
Ein Beispiel für die Formatierung finden Sie in der Liste der Optionen von Artistic Style . Idealerweise sollten die Regeln klar und vollständig genug sein, damit ein Programm den Code neu schreiben kann (obwohl es unwahrscheinlich ist, dass Sie jemals einen Code erstellen werden;))
Für die Namenskonvention würde ich versuchen, Klassen / Typen leicht von Variablen / Attributen zu unterscheiden.
Es ist auch in dieser Kategorie, dass ich die "Maßnahmen" wie klassifizieren:
- Bevorzugen Sie kurze bis lange Methoden: Es ist normalerweise schwierig, die Länge zu bestimmen
- Frühes Zurück / Weiter / Pause vorziehen, um Einrückung zu reduzieren
Verschiedenes?
Und als letztes Wort gibt es einen Punkt, der in Coding Standards selten, wenn überhaupt, diskutiert wird, vielleicht weil er für jede Anwendung spezifisch ist: Code-Organisation. Das architektonische Problem ist vielleicht das herausragendste Problem, es geht um das ursprüngliche Design, und Sie werden in Jahren davon geplagt sein. Sie sollten vielleicht einen Abschnitt für die grundlegende Dateibehandlung hinzufügen: öffentliche / private Header, Abhängigkeitsverwaltung, Trennung von Bedenken, Schnittstellen zu anderen Systemen oder Bibliotheken ...
Aber das ist nichts, wenn sie nicht tatsächlich angewendet und durchgesetzt werden .
Jeder Verstoß sollte während der Codeüberprüfung zur Sprache gebracht werden, und keine Codeüberprüfung sollte in Ordnung sein, wenn ein Verstoß vorliegt:
- Korrigieren Sie den Code entsprechend der Regel
- Korrigieren Sie die Regel so, dass der Code nicht mehr auffällt
Eine Regel zu ändern, bedeutet natürlich, dass die Verantwortlichen das "go ahead" machen.