Wie wichtig sind Richtlinien zur Code-Formatierung? [geschlossen]

18

Codierungsstandards sind in jeder Softwareentwicklungsorganisation üblich, aber wie wichtig ist es, sie einzuhalten? Ich kann die Notwendigkeit einer gewissen Konsistenz nachvollziehen, aber wenn ich mich mit einfachen Dingen wie der Position von Klammern, der Zeilenlänge usw. befasse, bin ich mir nicht sicher, ob zu strenge Standards viel zur Softwareentwicklung beitragen.

Ist es nicht wichtiger, dass Ihr Code lesbar ist, nicht dass er einem vordefinierten Standard entspricht? Anscheinend sind sie sowieso eher ... Richtlinien.

derekerdmann
quelle

Antworten:

12

Wenn Sie alle zu 100% dazu auffordern, sich an dieselbe Standardrichtlinie für die Codeformatierung zu halten, wird jeder aufgefordert, beim Schreiben eines Papiers mit 100 Seiten und demselben Schreibstil separat zusammenzuarbeiten.

Hoffentlich wird jeder die Arbeit in Englisch (oder derselben Sprache) schreiben, aber es werden unterschiedliche Stile erkennbar sein. Einige werden es gut schreiben, andere nicht. Einige werden Kontraktionen verwenden, andere werden die Wörter vollständig buchstabieren (Beispiel: Es ist so, wie es ist). Etc.

Ich denke, Sie haben die wichtigsten Punkte angesprochen:

  1. Es ist eine Richtlinie
  2. Lesbarkeit

Wenn Sie möchten, dass der Code dieselbe Formatierung beibehält wie ein Papier mit demselben Schreibstil, müssen Sie ihn bearbeiten und überarbeiten. Der Code muss bereinigt, überprüft, überarbeitet usw. werden.

Ich war noch nie in einem Geschäft, in dem ich mit dem Codierungsstil oder der Formatierung eines anderen Entwicklers vollkommen zufrieden war (zumindest, weil es nicht genau so ist wie meines). Aber ich bin zufrieden, wenn ich es lesen / verstehen kann und wenn es konsistent ist. Alles andere ist der Zucker des syntaktischen Zuckers.

Um Ihre Frage zu beantworten: etwas wichtig, aber es ist sicherlich nicht das Ende der Welt, wenn sie es nicht tun.

Schwamm
quelle
3
Vor allem # 2: Lesbarkeit. Manchmal kann ein bestimmtes Stück Code durch Abweichung von der Richtlinie besser lesbar gemacht werden.
Bart van Heukelom
Dank der heutigen IDEs können Sie sich 100% nähern, wenn Sie den Code bei jedem Speichervorgang anhand einer Vorlage neu formatieren. Eclipse macht das ganz gut.
Markus
1
@Markus Das funktioniert so lange, bis jemand eine andere IDE oder einen anderen Editor verwenden möchte. Ich bevorzuge es in einem Pre-Commit-Hook, um den Entwicklern mehr Freiheit zu geben.
Gustav Karlsson
Fair point @GustavKarlsson, auf diese Weise zentralisieren Sie die Formatierung und erstellen einen einzigen Änderungspunkt für den Fall, dass sich der "Standard" ändert. Als Workaround (mit mehr Aufwand) können Sie jederzeit eine zusätzliche Vorlage für die neue IDE schreiben.
Markus
5

Bei den Formatierungsstandards folge ich dem, was alle anderen tun. Wenn sie PascalCase für alles verwenden, verwende ich PascalCase. Wenn sie _camelCase verwenden, verwende ich _camelCase. Warum? Weil es den Umfang der Neuformatierung begrenzt, die ich mache, und begrenzt, was andere tun müssen, damit es "gut aussieht". Formatierungsstandards dienen normalerweise dazu, die Arbeit für alle zu vereinfachen.

TheLQ
quelle
5

Bei meiner jetzigen Arbeit bestand eine meiner ersten Aufgaben darin, einen Kodierungsstandard für unsere Entwicklungsgruppe zu entwickeln.

Mein erster Versuch war ungefähr sechzig Seiten lang (er enthielt einen Großteil der Framework-Richtlinien von Microsoft). Ich wurde gebeten, es zu reduzieren, und mein nächster Versuch war zehn Seiten lang, wobei ich Ideen aus verschiedenen guten Quellen verwendete. Ich wurde gebeten, es noch einmal zu reduzieren und es schließlich auf drei oder vier Seiten zu reduzieren, denke ich.

Es wurde nie adoptiert.

Warum? Weil ich mit vielen wirklich klugen Leuten zusammenarbeite, die bereits instinktiv einem vernünftigen Kodierungsstandard folgen.

Ich für meinen Teil folge den allgemein anerkannten Richtlinien von Microsoft und emuliere die gängigen Stile anderer (Javascript und jQuery sind anders formatiert als C #, obwohl es sich um geschweifte Klammern handelt). Ich verstoße auch von Zeit zu Zeit gegen die Regeln, wodurch der Code besser lesbar wird.

Robert Harvey
quelle
Warum haben Sie Ihren eigenen Codierungsstandard geschrieben, wenn es so viele gibt, und der Standard für die verwendete Sprache / das verwendete Framework ist?
Florian Margaine
2
Es wurde nie adoptiert - tadaa, und es gab die Aussage, nach der ich gesucht habe, als ich die Antworten durchgesehen habe. Das ist der springende Punkt: Je mehr Leute und je komplexer und willkürlicher die Regeln sind, desto unwahrscheinlicher ist es, dass sie jemals von einer Mehrheit des Teams übernommen werden. Sofern dies nicht wie in Visual Studio oder der Sprache Go erzwungen wird, tendieren Entwickler dazu, ihren eigenen Gedanken zu folgen. Ich warte jetzt seit fast 10 Jahren auf die IDE, die Code-Inhalte vom Code-Styling trennt.
JensG
2

Wenn Sie eine IDE verwenden, die die Grundlagen für Sie erledigt (z. B. Visual Studio), lassen Sie die IDE das tun, und was immer noch schwer zu sehen ist, ändern Sie, solange Sie die IDE das tun lassen oder Die nächste Person, die es automatisch formatiert, wird es sowieso einfach töten.

Was für eine Person am besten lesbar ist, gilt nicht für alle Menschen.

Wenn Sie diese Art von IDE nicht verwenden, besorgen Sie sich eine. Selbst mehr als 10 Minuten darüber nachzudenken ist meiner Meinung nach eine Verschwendung von Ressourcen.

Rechnung
quelle
4
Ich muss nicht zustimmen. Ich finde nichts ärgerlicher als eine IDE, die die Formatierung selbst ändert. Warum sollte ich meinen Code ohne meine Zustimmung ändern lassen? Es schneidet einen anständigen Teil der Kontrolle aus, den ich gerne über meine Arbeit habe.
Derekerdmann
Bill, sprechen Sie über die Drag-and-Drop-Namenskonventionen, die die IDE generiert, wie z. B. TextBox01? Oder meinst du ein Visual Studio-Plugin wie Resharper?
Spong
derek - ja, das ist ärgerlich, aber die zeit, die mir erspart, 90% der zeit nicht darauf zu achten, ist die 10% der zeit wert, die ich habe, um es zu ringen.
Bill
Sonne - ich meinte Formatierung nur in diesem Fall. Ich würde die Standardkontrollnamen nur dann akzeptieren, wenn es überaus offensichtlich wäre, was vor sich geht. in vielen formen fällt das nach der zweiten kontrolle auseinander. Ich bin kein großer Resharper-Fan, aber wenn ich es benutze, versuche ich auch nicht zu korrigieren, was es erzeugt. Kämpfe nicht mit deinem Toolset, wenn du nicht musst.
Bill
Ein Team kann mehrere IDEs haben - z. B. Eclipse und IDEA für Java. Es würde ein wenig Mühe kosten, die Code-Formatierung in Form von Konfigurationsdateien einzurichten - aber es lohnt sich.
Talonx
1

Ich denke, es hat einen unerwähnten Vorteil, wenn man hilft, Code schnell zu verstehen. Je ähnlicher die Code-Formatierung in einem Projekt und für alle Entwickler ist, desto einfacher (und unbewusster) können Sie mit dem Code arbeiten.

Ich hatte Nachwuchsentwickler zu mir kommen lassen, nachdem ich versucht hatte, über einen längeren Zeitraum mit selbst einfachen Fehlern umzugehen. Nachdem sie ein paar Minuten gebraucht hatten, um unser Code-Format anzuwenden, konnten sie den Fehler, den sie zuvor übersehen hatten, schnell erkennen.

Dabei ist die Lesbarkeit auf jeden Fall wichtig. Wenn Ihre Code-Format-Standards gut durchdacht sind und ordnungsgemäß verwendet werden, werden Sie möglicherweise feststellen, dass Sie nicht nur den Code lesen und den Code noch schneller verstehen können.

Ein Satz von Richtlinien, die ich bei der Entwicklung oder Aktualisierung unserer Codierungsformate verwende, sind die Gestaltprinzipien der Gruppierung - http://en.wikipedia.org/wiki/Gestalt_psychology#Gestalt_laws_of_grouping

Als direktes Ergebnis / Beispiel erfordert unsere Code-Formatierung, dass jeder Blockcode (if, switch usw.) die offene Klammer in der nächsten Zeile hat, damit er mit der schließenden Klammer übereinstimmt:

if(true)
{
}

Mit der Überlegung, dass Ihr Verstand nach dem Prinzip der Symmetrie die öffnenden und schließenden Klammern erkennen und den Codeblock schneller auf natürliche Weise erkennen kann.

Chris
quelle
After taking a few minutes to apply our code format with them, they were quickly able to see the bug that they had missed before.Dies liegt nicht daran, dass Ihr Code-Format ihnen geholfen hat, den Fehler zu erkennen. Das liegt daran, dass sie durch die Neuformatierung des Codes gezwungen wurden, sich den Code, den sie gerade überflogen hatten, genau anzuschauen.
Brandin
1

Egal welche Sprache oder welches Tool Sie verwenden, lassen Sie sich etwas einfallen. Konfigurieren Sie Ihre IDE und checken Sie die Konfigurationsdatei ein.

Wenn jemand das Projekt auscheckt, verwendet er dieselben Formatierungsstile. Es spielt keine Rolle, was der Stil ist, nur dass er konsistent ist. Ich habe meine eigenen Vorlieben in Bezug auf Leerzeichen und Tabulatoren und welche Linie die geschweiften Klammern haben. Aber mehr als meine eigenen Vorlieben ist es mir wichtig, dass eine bestimmte Quellcodedatei mit sich selbst übereinstimmt. Es ist so viel lesbarer als ein Mischmasch, der aus einem Formatkrieg resultiert.


quelle
0

Das Schlimmste, was mir bisher begegnet ist, dass ich keine Codierungsstandards verwende. Und es ist Ihnen untersagt, einen Codeblock lesbarer zu machen, da er verschiedene Tools beschädigt ... Da wir Patches verwenden, um Änderungen anzuwenden (Änderungs- / Fehlerbehebungsanforderung -> Beheben / Ändern -> Patch -> Patch von einer "vertrauenswürdigen" Person angewendet) -> commit) kann man ziemlich lustig aussehenden Quellcode bekommen (aus Sicht der Lesbarkeit). Zumindest haben wir niemanden, der zwei Buchstabenvariablen verwendet (-.

Das Lustigste ist, dass sich alle einig sind, dass wir das ändern müssen. Es gab sogar ein paar Neuformatierungsversuche (automatisiert beim Festschreiben), aber da eine einzige winzige Formatierungsoption fehlt, ist das Ganze gerade durchgekommen. Sight ... [/ rant]

Audrius
quelle
0

Richtlinien tragen zur Verbesserung der Codequalität bei:

  • aus Sicht der Autoren: Viele Regeln zielen darauf ab, die Einführung von Fehlern zu reduzieren. Beispielsweise macht eine Regel, die besagt, dass if()oder for(;;)Konstrukte von einem Block und nicht von einer einzelnen Anweisung gefolgt werden müssen, die Absicht des anfänglichen Codierers explizit und hilft den nächsten Codierern, dies aufrechtzuerhalten.

  • aus lesersicht: code, der vereinbarten richtlinien folgt, wird effizienter überprüft als code mit verschiedenen stilen. Der Prüfer weiß mit weniger Aufwand, wo er nach möglichen Fehlern suchen kann.

mouviciel
quelle
0

Es gibt keinen universellen Standard für das, was ein Team tun oder nicht tun sollte. Einige Teams müssen strenge Richtlinien befolgen, andere nicht.

Der Punkt ist, dass Sie als Team zusammenarbeiten und entscheiden sollten, was für Ihr Team am besten ist . Code sollte einfach zu lesen sein, da er um Größenordnungen häufiger gelesen wird als geschrieben. Wenn Ihr Team Unterstützung beim Erstellen von lesbarem Code benötigt, halten Sie sich an einen Kodierungsstandard. Wenn nicht, dann nicht.

Abgesehen davon denke ich, dass die meisten Teams davon profitieren würden, wenn sie sich auf eine Standardmethode für die Benennung von Variablen, Funktionen und Klassen, Positionsklammern usw. einigen würden. Wenn sich das Team auf so etwas Einfaches nicht einigen kann, wie können sie dann erwarten, dass sie zusammenkommen und die wirklich wichtigen Entscheidungen treffen? Außerdem wird Ihr Team nicht für immer aus denselben Leuten bestehen - die Leute gehen, neue Leute werden eingestellt. Je einfacher es für neue Leute ist, die Codebasis zu beschaffen, desto schneller können sie zum Team beitragen, ohne die Qualität des Codes zu beeinträchtigen.

Bryan Oakley
quelle