Was sollten Kodierungsrichtlinien tun, und gibt es gute Beispiele für Richtlinien? [geschlossen]

8

Was sind einige gute Beispiele für Kodierungsrichtlinien? Ich suche wirklich nichts, was spezifisch für eine einzige Sprache ist.

Aber was sollte ich tun / evaluieren, während ich Codierungsrichtlinien schreibe? Wie flexibel sollten die Richtlinien sein und wie viel sollten Entscheidungen dem Programmierer oder einem anderen überlassen oder von den Leitlinien vorab festgelegt werden?

Diese Richtlinien, an denen ich arbeite, sollen eine breite Palette von Themen abdecken: Kommentare, Datenbankdesign und sogar einige Benutzeroberflächenrichtlinien.

    
Justin Yost 04.12.2008, 22:45
quelle

11 Antworten

24

Für die Codierung von Standards gibt es im Allgemeinen drei Zwecke:

  • Reduziere die Wahrscheinlichkeit von Fehlern
  • Reduzieren Sie den Zeitaufwand für die Analyse von Code, der von jemand anderem geschrieben wurde
  • Geben Sie jemandem eine Powertrip

Offensichtlich ist das dritte eine Verschwendung der Zeit aller anderen, aber Sie müssen es in Betracht ziehen, insbesondere damit Sie nicht diesen Weg gehen.

Nachdem ich das gesagt habe, gibt es einige eindeutige Dinge, die ich bemerkt habe:

  • Erzwingen konsistente Leerraumnutzung. Tabs, 2 Leerzeichen, 4 Leerzeichen, spielt keine Rolle. Halten Sie es konsistent, so dass die Einrückungsebenen von Leuten, die verschiedene Editoren verwenden, nicht vermasselt werden. Ich habe Fehler gesehen, weil Wartungsprogrammierer die Verschachtelungsebene eines Codeblocks falsch interpretiert haben.
  • Erzwingen Sie konsistente Protokollierungsmethoden. Es ist ein enormer Aufwand für die Supportmitarbeiter, wenn sie nicht in der Lage sind, Logs zu überfliegen, da das Modul jedes Moduls aus verschiedenen Gründen protokolliert und jeder eine andere Definition von Info vs. Warnung vs. Fehler hat.
  • Erzwingen Sie eine konsistente Fehlerbehandlung. Wenn Modul A Ausnahmen auslöst, gibt Modul B Fehlercodes zurück, und Modul C protokolliert einfach und geht weiter, es wird ein Schmerz sein, sie zu integrieren, ohne dass ein Fehler durch die Risse geht.
  • Versuchen Sie, Kleinigkeiten wie die Platzierung von geschweiften Klammern zu vermeiden. Das wird viele Leute dazu bringen, sich über ihren Lieblingsstil zu streiten, und am Ende hat das wirklich keinen großen Einfluss auf die Lesbarkeit von Code. Auf der anderen Seite kann die Durchsetzung der Präsenz von Klammern einen Unterschied machen.
  • Wenn Sie unterschiedliche Codebasen integrieren, sollten Sie nicht versucht sein, die Namenskonventionen für alle Variablen so zu ändern, dass sie dem goldenen Standard entsprechen. Möglicherweise haben Sie einen Standard für die Vorwärtsbewegung, aber am wichtigsten ist, dass alle lokalisierten Standards, die bereits existieren, konsistent beibehalten werden. Wenn ein Modul m_member verwendet, sollte ein Wartungsprogrammierer m_member2 verwenden und keinen anderen Standard anwenden (z. B. member2_ oder m_lpcstrMember2 oder was auch immer). Lokale Konsistenz ist König.
  • Dateisystemlayout ist wichtig. Halten Sie es konsistent. Erleichtern Sie es jemandem, in eine Quelldatenbank der Bibliothek zu springen und sofort zu wissen, wo sich die Header, das Makefile, die Quellen usw. befinden. Wenn Sie mit Java oder Python arbeiten, ist dies kein Problem, da das Paketsystem dies erzwingt. Wenn Sie mit C, C ++ oder einer Vielzahl anderer Skriptsprachen arbeiten, müssen Sie selbst ein Standardlayout erstellen und dabei bleiben.
  • Schwitz nicht das kleine Zeug. Variablennamenskonventionen, Leerzeichen zwischen Klammern oder Schlüsselwörter oder Funktionsnamen ... das meiste ist egal, weil es die Wahrscheinlichkeit eines Fehlers nicht verringert. Jede Regel, die Sie festlegen, sollte eine konkrete Begründung haben, und Sie sollten keine Angst haben, sie zu ändern oder zu entfernen, wenn Sie feststellen, dass sie mehr Kummer verursacht, als sie wert ist.
  • Erzwinge keine unnötigen Kommentarblöcke überall. Sie werden als Verschwendung enden, und die meisten Kommentare werden besser im Code selbst ausgedrückt (zum Beispiel als Variablen- oder Funktionsnamen).

Schließlich ist es am wichtigsten, regelmäßige Code-Reviews zwischen Kollegen zu haben. Ermutigen Sie die Leute zu sprechen, wenn sie einen "Code-Geruch" sehen. Stellen Sie außerdem sicher, dass die Leute erkennen, dass konstruktive Code-Kritik nicht als persönliche Information gedacht ist - die Quelle wird von jedem im Team geteilt, es gehört nicht nur dem ursprünglichen Autor. Nach meiner Erfahrung waren die abscheulichsten Probleme Entwurfsprobleme, die durch eine Menge Codierungsrichtlinien nicht gelöst worden wären. Softwaredesign ist immer noch eine Art Kunstform (zum Guten oder zum Schlechten), und ein Pool von Gehirnen ist viel besser als ein einziger.

    
Tom 05.12.2008, 02:01
quelle
9
%Vor%     
John MacIntyre 04.12.2008 23:08
quelle
8

Es ist eine ziemlich offene Frage, und die Antwort ist genauso offen:

Jede Richtlinie sollte weniger kosten als der Nutzen, den sie bringt.

Seien Sie vorsichtig, weil jede Seite der Gleichung einige versteckte Teile enthält.

Die Kosten für die Implementierung können beinhalten, dass vollkommen gute Alternativen ausgeschlossen werden, Kreativität und Innovation erstickt werden und Code-Reviews dazu ermutigt werden, kleinere Übertretungen des Stils hervorzuheben anstatt echte Probleme anzugehen.

Der Wert der Vorteile kann für einen vielbeschäftigten Entwickler in Eile nicht greifbar (und damit frustrierend) sein, kann aber dazu führen, dass die Marke Ihres Unternehmens stärker ist oder neue Mitarbeiter schneller in das Projekt einbindet - etwas, das den kleinen Zuwachs überwiegen könnte Kosten der Einhaltung.

    
Oddthinking 04.12.2008 22:56
quelle
4

Als Entwickler bevorzuge ich im Allgemeinen Richtlinien, die eine grundlegende Anleitung geben, aber nicht so streng, dass ich nicht programmieren kann, wie ich es mag ... zum Beispiel, wenn eine Richtlinie mir sagt, welche Codierungsmuster verwendet werden müssen Erlaubt mir, mein eigenes professionelles Urteil zu fällen, dann ist es zu eng:

Zum Beispiel sind dies die Dinge, die ich erwarten könnte:

  • Stil von Variablennamen, d. h. ungarische Notation (nicht dass ich diese genau verwende)
  • Methoden sollten mit ihrem allgemeinen Zweck kommentiert werden, einschließlich was sie zurückgeben (wenn überhaupt)
  • Klassen sollten mit einem bestimmten Layout definiert werden: d. h. alle privaten Felder oben, gefolgt von Ereignissen, öffentlichen Methoden und privaten Methoden, unabhängig davon, ob sie in alphabetischer Reihenfolge angezeigt werden sollen (
  • )
  • Namenskonventionen für Namespaces, Klassen, Methoden, Ereignisse und Eigenschaften usw.

Sie bekommen das Bild. Ich sollte nicht auf Dinge wie:

beschränkt sein
  • Du sollst If notation anstelle von int a = (blah) benutzen? wahr: falsch;

Coding-Stile müssen offensichtlich im gesamten Team vorhanden sein, damit Entwickler effektiv zusammenarbeiten können. Sie können keine Person im linken Feld haben, die komplexe mathematische Algorithmen verwendet, die kein anderer im Team verstehen kann, und einen anderen Ausweg im rechten Feld haben, der die Implementierung von Schnittstellen kaum verstehen kann. Als Faustregel sollten sie so konzipiert sein, dass sie Ihr Team zusammenhalten, ohne Produktivität und Kreativität zu beeinträchtigen.

Bekommen Sie etwas Input von Ihrem Entwicklungsteam als Ganzes, damit ein "Haus" -Standard alles enthalten kann, was er sollte, und nicht eine Menge Dinge, die es nicht enthalten sollte.

    
BenAlabaster 04.12.2008 23:17
quelle
2

Codierungsrichtlinien erleichtern es anderen, Ihren Code zu lesen. Selbst wenn Sie Code für sich selbst schreiben und der einzige Entwickler sind, kann es nützlich sein, eine Reihe von Richtlinien zu finden, die in der Branche allgemein akzeptiert sind und sich daran halten. Es wird es Ihnen leichter machen, den Code anderer Leute zu lesen und zu einem späteren Zeitpunkt in ein größeres Team zu passen.

Wenn Sie .net verwenden, werfen Sie einen Blick auf StyleCop. Standardmäßig enthält es Standards, die MS selbst verwenden und zum Entwerfen des .NET-Frameworks verwenden. Sie können es von hier bekommen:

Ссылка

Sie können Regeln, die Sie nicht mögen, deaktivieren und eigene hinzufügen. Es kann sogar geschrieben werden, um die Regeln zu erzwingen, wenn der Code eingecheckt wird. Das Tolle daran ist, dass wenn Sie wirklich neu in dieser Art von Sachen sind, es Ihnen genau sagen wird, was Sie falsch machen. Wenn Sie noch einen Schritt weiter gehen wollen, schauen Sie sich Resharper an. Es ist die gleiche Art von Sache, aber tut es in Echtzeit, während Sie tippen (obwohl standardmäßig ein etwas anderer Standard verwendet wird.

Ich bin sicher, es gibt ähnliche Programme in anderen Sprachen, wenn c # nicht dein Ding ist!

    
DaEagle 04.12.2008 23:13
quelle
2

Ich möchte ein Coding-Standarddokument, um religiöse Argumente für das Team aufzulösen.

Für die Fragen, bei denen es mehrere lohnende Antworten gibt und die Leute dazu neigen, lange Zeit über sie zu streiten, wollen wir Konsistenz über das gesamte Projekt hinweg bekommen und vermeiden, viel Zeit damit zu verbringen, sie zu diskutieren.

Gute Beispiele sind "TABs vs. Spaces" und "K & amp; R vs ANSI Brace Placement". Nehmen Sie eine Umfrage im Team vor, treffen Sie eine Entscheidung und schreiben Sie sie auf. Wenden Sie die Entscheidung auf alle vorhandenen Codes gleichzeitig an und überprüfen Sie sie selbst. Besprechen Sie es nie wieder.

    
Jay Bazuzi 04.12.2008 23:37
quelle
1

Im Allgemeinen möchte ich, dass Richtlinien die Fragen beantworten, die Sie normalerweise stellen würden, die aber zu lange dauern würden, um zu antworten, und das könnte "persönliche Präferenz" sein, wenn Sie nur alleine programmieren würden. In der Regel geben sie wichtige Informationen wie Benennungskonventionen für die Datenbank und Leerzeichen im Vergleich zu Tabs (und wie viele Leerzeichen) sowie Kommentare / Dokumentationskommentarstile an.

UI-Richtlinien sind ein anderes Biest als die anderen, die ich denke.

Eines meiner Lieblingsbeispiele für Codierungsstil-Richtlinien ist der Linux-Kernel-Codierungsstil , obwohl dies nicht der Fall ist gehe auf die Besonderheiten ein, die ich in anderen Guides gesehen habe.

    
jamuraa 04.12.2008 22:52
quelle
1

Juval Lowys C # -Codierrichtlinien sind ein hervorragendes Beispiel für eine geeignete Richtlinie . Ich habe ein paar Dinge, die ich ändern würde, aber in den meisten Fällen ist es fantastisch.

    
Tad Donaghe 04.12.2008 23:23
quelle
1

Ich mag auch die Idee eines Codierungsstils, der Entwicklern hilft, schlechten / fehlerhaften Code visuell zu identifizieren. Zum Beispiel kann es hilfreich sein, den Typ einer Variablen in ihrem Namen anzugeben, wenn jemand versehentlich einen int-Wert oder ähnliches zuweisen soll.

    
abramN 05.12.2008 00:55
quelle
1

Code Complete ist ein exzellentes Buch über bewährte Praktiken und Richtlinien für die Programmierung, die auf jede Sprache angewendet werden können.

Es deckt alle Aspekte der Programmierung ab und ist ein Muss für den praktischen Programmierer, der die Dinge auf die "beste" Weise für jedes aufgetretene Problem tun möchte.

    
Jason 05.12.2008 16:50
quelle
0

Coding Guidelines sind Verhaltensregeln für Ihre Teammitglieder, damit Sie ohne viel Ärger den anderen Code lesen können.

Es wird auch die "Klammer auf Newline oder in der gleichen Zeile" Diskussionen bei Ihren Code-Review-Sitzungen aus dem Weg, die eine Menge Zeit spart; -)

Achten Sie beim Schreiben von Code-Richtlinien darauf, dass sie aus einem bestimmten Grund da sind und dass sie Ihrem Team beim Schreiben von besser lesbarem Code helfen.

    
Rolf 04.12.2008 23:12
quelle