Ist der Codierungsstil in Organisationen eine optionale Sache?

30

Dieses Programmierstil-Dokument hat eine allgemeine Regel:

Die Regeln können verletzt werden, wenn starke persönliche Einwände dagegen erhoben werden.

Dies kollidiert mit der Art und Weise, wie ich denke, und es gibt viele Artikel, die besagen, dass der Codierungsstil tatsächlich wichtig ist. Zum Beispiel das sagt:

In einem Kodierungsstandarddokument wird den Entwicklern mitgeteilt, wie sie ihren Code schreiben müssen. Anstatt dass jeder Entwickler in seinem eigenen bevorzugten Stil codiert, schreibt er den gesamten Code gemäß den im Dokument beschriebenen Standards. Dies stellt sicher, dass ein großes Projekt in einem konsistenten Stil codiert wird - Teile werden von verschiedenen Programmierern nicht unterschiedlich geschrieben. Diese Lösung erleichtert nicht nur das Verständnis des Codes, sondern stellt auch sicher, dass jeder Entwickler, der sich den Code ansieht, weiß, was ihn in der gesamten Anwendung erwartet.

Verstehe ich etwas aus diesem Dokument und dem Zitat oben in dieser Frage falsch ? Können die Leute den Codierungsstil wirklich einfach ignorieren?


Vielleicht war ich nicht klar genug, also werde ich mit dieser Bearbeitung ein bisschen klarstellen.

Ich schreibe das Coding-Style-Dokument für unser Team und möchte den Style mithilfe einiger statischer Analysatoren überprüfen. Wenn dies fehlschlägt, sendet Jenkins E-Mails. Und ich möchte die Codeüberprüfung nicht bestehen, wenn der Stil nicht übereinstimmt. Dies kollidiert eindeutig mit dem ersten Zitat.

Aber wenn das Zitat stimmt, wozu dient dann das Dokument mit dem Codierungsstil, wenn jeder tun kann, was er will?

BЈовић
quelle
Die Antwort lautet natürlich: es kommt darauf an. Alle nachstehenden Antworten gelten für verschiedene Teams in verschiedenen Unternehmen mit unterschiedlichen Kulturen. Was auch immer Sie vorschlagen, sollte zu den Zielen des Teams passen - und Sie sollten eine Vorstellung davon haben, da Sie es natürlich entweder einzeln oder in kleinen Gruppen informell mit den Teammitgliedern besprochen haben. Persönlich bevorzuge ich a) alles, was ich einfach in Emacs, Visual Studio und IntelliJ IDEA einstellen kann, und b) absolut keine harten Tabs in Dateien unter allen Umständen! Für alles andere ist alles in Ordnung, was das Team will.
Davidbak
Wenn Sie meiner Meinung nach einen Leitfaden schreiben, haben Sie den Kampf bereits verloren. Auf keinen Fall können Sie autorisierende Dokumente erstellen, die Entwickler tatsächlich lesen. Moderne IDEs kommen mit einer Reihe von Stilen. Wählen Sie eine aus und nennen Sie sie Ihre Referenz.
Cerad
Das von Ihnen verknüpfte Formatierungsdokument ist "ein" vorgeschlagenes Codierungsformatierungsdokument. es ist nicht "der" Stil doc. Wenn Sie das Dokument Ihrer Site erstellen, verwenden Sie dieses, soweit es passt. Wenn Sie Einwände haben, ändern Sie Ihr Dokument entsprechend. Lassen Sie z. B. Aussagen aus, die Sie nicht mögen.
user2338816
"Die Regeln können verletzt werden, wenn starke persönliche Einwände dagegen bestehen." Manchmal ist es eine politische Überlegung: Phase 1 ist Opt-In. Ohne sie könnte ein leitender Mitarbeiter der alten Schule die Idee der Codestandards völlig zunichte machen.
brian_o

Antworten:

12

Soweit ich das beurteilen kann, ist die Aussage, die Sie verwirrt hat, ein pragmatischer Kompromiss, der gemacht wurde, damit die Leitlinien ein möglichst breites Publikum ansprechen. Abhängig von Ihrem spezifischen Kontext (mehr dazu weiter unten) haben Sie möglicherweise die Möglichkeit, ihn anzupassen und die Richtlinien effizienter zu nutzen.

Sie sehen, Leitlinien beziehen sich auf "starke persönliche Einwände" als Mittel zur Rechtfertigung von Verstößen. Solche Einwände sollten nicht leichtfertig ignoriert werden, insbesondere wenn sie von erfahrenen Entwicklern stammen.

Diese Einwände mögen falsch sein, aber (und das ist sehr, sehr GROSS) sie können auch darauf hinweisen, dass eine bestimmte Regel falsch ist - entweder im Allgemeinen oder im Kontext des jeweiligen Projekts (ein Beispiel für eine Regelübereinstimmung muss angegeben werden) detaillierte Protokollierung in leistungskritischen Code).

Ich denke, dass jeder vernünftige Styleguide das oben Gesagte berücksichtigen und versuchen sollte, einem möglichen Bedürfnis Rechnung zu tragen, sich selbst anzupassen. Wenn der Leitfaden, der Sie verwirrte, nur auf ausgereifte Teams mit effizienten und reibungslosen Prozessen und Umgebungen abzielte , könnte dies viel weniger eindeutig formuliert werden, zum Beispiel so:

Die Regeln sollten streng befolgt werden, es sei denn, es wird eine Herausforderung gegen sie erhoben. In diesem Fall sollte die beanstandete Regel ignoriert werden, bis diese behoben ist. Dies geschieht entweder durch Ablehnen der Herausforderung oder durch Akzeptieren und Anpassen der Regeln an die Anforderungen.

Vielleicht gefällt Ihnen das oben Genannte besser und Sie möchten, dass es überall für alle so ist, aber schauen Sie sich diesen Teil "Herausforderung wird gestellt / ignoriert / angepasst" genauer an und fragen Sie sich, wie er umgesetzt werden kann. Fragen Sie sich, wie lange es je nach Projekt und Team dauern kann . Wenn es eine Stunde dauert, ist das akzeptabel? Was ist, wenn es einen Tag, eine Woche oder einen Monat dauert?

Wie Sie sehen, könnte dieser Ansatz des Herausforderns und Ignorierens bis zur Lösung eine breite Tür für Missbrauch öffnen, wenn er als Leitfaden für ein Projekt präsentiert wird. "Ja, ja, wir hören Sie, machen wir es so, wie es der Leitfaden sagt. Füllen Sie zuerst dieses Herausforderungsformular aus und holen Sie die Genehmigungen für CEO / CFO / CTO ein. Erwarten Sie, dass dies ein oder zwei Wochen dauert. Warten Sie danach, bis wir unsere Codeprüfungen aktualisieren ; das kann noch ein oder zwei Wochen dauern. Stellen Sie in der Zwischenzeit sicher, dass Ihr leistungskritischer Code ordnungsgemäß formatierte Protokollanweisungen über jeden Registerbewegungsvorgang erbricht. "

Ich kann die Gedanken der Autoren des Leitfadens nicht lesen, aber es scheint vernünftig anzunehmen, dass sie es vermeiden wollten, es zu verwenden, um ein Durcheinander wie oben beschrieben zu rechtfertigen. Aus dieser Perspektive ist es einfach sicherer, klar zu sagen, dass der Leitfaden keine Durchsetzung voraussetzt - so ungeschickt er auch sein mag, er kann für eine willkürlich breite Palette von Teams und Projekten verwendet werden. Es besteht wahrscheinlich die Erwartung, dass ein derart umfangreiches Angebot ausgereiften und effizienten Teams die Möglichkeit bietet, es einigermaßen einzugrenzen, ohne die Entwicklerproduktivität zu beeinträchtigen.


Angewandt auf Ihren speziellen Fall, Schreiben des Codierungsstildokuments für Ihr Team und Fehlschlagen der Codeüberprüfung, wenn der Stil nicht übereinstimmt. Ich denke, Sie müssen herausfinden, wie lange es möglicherweise dauern kann, bis Entwickler eine bestimmte Regel in Frage stellen. Lassen Sie sie ignorieren. aufgelöst und je nach Auflösung entweder geändert oder wiederhergestellt.

Wenn Sie einen Weg finden, wie Sie diesen Prozess zum Laufen bringen können, ohne viele Hindernisse in Ihren Entwicklungsworkflow zu bringen, sollten Sie in der Tat einen formalisierten und einfach zu verfolgenden Ansatz für die Herausforderung / Lösung in Betracht ziehen, anstatt das chaotische "Verletzen, wenn Sie laut genug weinen".


Als Randnotiz möchte ich ansprechen, was Sie in einem anderen Kommentar geschrieben haben : "Angenommen, der Codierungsstil ist ideal, und wenn dies nicht der Fall ist, usw."

Das ist wirklich eine gefährliche Annahme. Ich habe mir die Nase gebrochen (zweimal! In einem einzigen Projekt! Ich hatte große Erfahrung und stellte mir vor, dass ich alles darüber weiß, mache eine gute Figur) und empfehle Ihnen dringend, es fallen zu lassen. Es ist sicherer anzunehmen, dass der Styleguide Fehler enthält, und sich Gedanken darüber zu machen, was zu tun ist, wenn solche Fehler entdeckt werden.

Mücke
quelle
Sagen wir es so: Unser Team ist klein und unser Prozess umfasst niemanden über meinem Chef (der nur ein Teamleiter ist). Daher werden die Spiele, wie Sie sie oben erklärt haben, nicht stattfinden.
Freitag,
@ BЈовић in diesem Fall Herausforderung / Lösungsansatz sieht ein klarer Gewinner
Mücke
53

Es ist eine schlechte Idee, Menschen zu erlauben, Codierungsstile aufgrund persönlicher Vorlieben zu ignorieren .

Das Zitat in Ihrer Frage scheint jedem Entwickler die Möglichkeit zu geben, einfach zu sagen: "Ich werde diesen Stil nicht verwenden, weil er mir nicht gefällt."

Dies steht im Widerspruch zu dem ganzen Punkt, dass alle im Team die gleichen Maßnahmen ergreifen müssen, um Konsistenz und Lesbarkeit zu gewährleisten.

Ich stimme zu, dass ein Stildokument mit einer solchen Aussage wahrscheinlich sinnlos ist.

Trotzdem ist eine gewisse Flexibilität bei der Einhaltung der Stilrichtlinien ratsam:

  • Das sklavische Befolgen einer Richtlinie könnte die beste Art des Schreibens eines bestimmten Codeteils verhindern . Entwickler sollten in der Lage sein, die Richtlinie zu ignorieren und festzustellen, dass das, was sie getan haben, die beste und am besten lesbare Methode ist, um in diesem Fall etwas zu erreichen.
  • Das Arbeiten mit altem Code erfordert möglicherweise Flexibilität. Es ist wahrscheinlich keine gute Gelegenheit, eine große vorhandene Codebasis neu zu formatieren. Wenn Sie einen bestimmten Abschnitt erheblich umschreiben, können Sie ihn in den bevorzugten Stil umformatieren. Wenn Sie jedoch nur eine kleine Änderung vornehmen, ist es möglicherweise besser, den vorhandenen Stil des Codes zu verwenden.
  • Sich über jeden kleinen Verstoß gegen den Styleguide Gedanken zu machen, ist kein guter Zeitgewinn. Die Codeüberprüfung ist ein guter Zeitpunkt, um jeden Code hervorzuheben, der erheblich vom Teamstil abweicht. Es ist jedoch wahrscheinlich, dass das Auffinden und Beheben kleinerer "Fehler" zu einer anstrengenden Arbeit wird, die sich auf das Falsche konzentriert. Sicher, die Codeüberprüfung ist fehlgeschlagen, wenn der Stil offensichtlich ignoriert wurde. Aber ich mag es nicht, einen Analysator zu betreiben und auf alle fehlenden Klammern oder Einrückungen hinzuweisen, ganz zu schweigen davon, dass jemand auf dieser Basis versagt.

Fazit: Ermöglichen Sie Flexibilität bei der Einhaltung von Stilrichtlinien, um die Anforderungen Ihres Teams bestmöglich zu erfüllen - jedoch nicht aus willkürlichen Gründen wie persönlichen Vorlieben.


quelle
4
Es wäre besser zu sagen, wenn es einen guten Grund gibt , die Regeln zu brechen, dann brechen Sie sie. Es ist unmöglich, alle guten Gründe aufzulisten, aber ich würde vorschlagen, dass eine bloße persönliche Präferenz keine ist. Der Python-Styleguide enthält einen ausführlichen Abschnitt darüber, wann Sie die Regeln brechen sollten.
Michael Hoffman
1
Eine automatisierte Überprüfung des Nitpicks im Stil kann nützlich sein, aber nur, wenn Sie eine einfache Schaltfläche verwenden, um alle empfohlenen Änderungen zu übernehmen, und die Möglichkeit, "Nein, ich habe diese Regel aus einem bestimmten Grund gebrochen" zu sagen. Abhängig von Ihrer Prozessstufe muss Letzteres möglicherweise in der Codeüberprüfung / etc. Begründet werden.
Dan Neely
1
Die Einhaltung des Codestils ist in meinem Unternehmen so wichtig, dass PyLint die PEP8-Standards in unserem Code als Teil unserer Build-Pipeline durchsetzt. Commits, die den Codezustand verringern, werden automatisch zurückgewiesen.
Sethmlarson
1
Überprüfen Sie genügend Regeln, um das gewünschte Ergebnis zu erzielen. Ignorieren, aktualisieren oder verzichten Sie auf Probleme. Wenden Sie eine angemessene Menge gesunden Menschenverstand an, um mit Glück und Produktivität zu handeln
Sean Houlihane,
2
Im Laufe der Jahre bin ich zu dem Schluss gekommen, dass der einzige wirklich nützliche Teil der Stilrichtlinien darin besteht, den Code richtig einzurücken. Sie müssen nicht einmal alle auf die gleiche Weise einrücken - sondern nur richtig einrücken. Die von mir geschriebenen Stilrichtlinien enthalten im Allgemeinen nicht mehr als 3 Regeln (normalerweise nur eine Regel - richtig eingerückt, damit es nicht hässlich aussieht). Wenn ich in ein Geschäft komme und sehe, dass der Code bereits in Ordnung ist, empfehle ich nicht einmal, einen Codierungsstil zu benötigen.
Slebetman
13

Es gibt Codierungsstile und Stilrichtlinien, mit denen der Code besser lesbar gemacht werden kann. Und Lesbarkeit hilft bei der Komplexität.

Daher kommt es letztendlich darauf an, wie viel es hilft, die Dinge verständlich zu machen, wenn Sie gegen den Kodierungsstil verstoßen (ich würde es als anpassen bezeichnen), der Ihren organisatorischen Anforderungen entspricht.

Denken Sie daran, dass alles, und ich betone, ALLES, von der OO-Programmierung über funktionale Paradigmen bis hin zu verschiedenen Nebenläufigkeitsmodellen, nur aus dem Grund existiert, um den Menschen beim Umgang mit Komplexität zu helfen.

Jeder Dummkopf kann Code schreiben, den ein Computer verstehen kann. Gute Programmierer schreiben Code, den Menschen verstehen können. - Martin Fowler, 2008

Baumkodierer
quelle
Ihre Antwort ist nicht klar JA oder NEIN. Wollen Sie damit sagen, dass dies wirklich optional ist? Mit Ruhe - ich stimme zu.
Freitag,
3
Ja, es ist optional, wenn es wirklich hilft, wenn man dagegen verstößt (man denke an alten Code). Nein, es ist nicht so, wenn Sie es nur tun, weil Sie Lust dazu haben und es keine vernünftigen Vorteile bringt. Ich sage also, dass nichts in Stein gemeißelt ist. Brechen Sie alles oder nichts, um die Komplexität zu reduzieren.
Treecoder
3
@ BЈовић Was Treecoder im Wesentlichen sagt, ist, dass Sie den falschen Fokus haben. Regeln sind keine Magie. Sie werden nicht alles auf magische Weise verbessern, indem Sie sich strikt an ein Regelwerk halten. Sie müssen sich also Gedanken machen: "Was sollen diese Regeln bewirken?" Stattdessen arbeiten Sie auf dieses Ziel hin. Die Regeln geben an, wie Ihre Standardeinstellung lauten soll. Wenn das Befolgen der Regeln dem Ziel entgegenwirkt, zu dessen Erreichung sie aufgestellt wurden, lohnt es sich in diesem Fall nicht, sie zu befolgen .
jpmc26
6

Ist der Codierungsstil in Organisationen eine optionale Sache?

Organisationen entscheiden sich für Coding-Stile - es ist nicht unbedingt erforderlich, dass das überhaupt vorhanden ist.

Das Zitat, das Sie gerade lesen, befasst sich mit dem größten Problem, das ich in Bezug auf das Codieren von "Style" und echten Superstar "Hackern" sehe - Sie bringen einen neuen Typen an Bord und er schreibt Code, der Zombies fallen lässt und Ihre alten Server schnell zum Schreien bringt. .. aber sein Codierungsstil unterscheidet sich von Ihrem "akzeptierten Organisationsstil". Er weigert sich, sich zu ändern, und der Prozess, um jeden dazu zu bringen, sich seinem bestimmten Stil anzupassen, wird zeitaufwändig und teuer sein. Was jetzt?

Die meisten der Super - Hacker ich weiß , kommen mit Egos genauso groß wie ihre Fähigkeiten, und sie wollen , dass die Organisation anzupassen ihnen , nicht umgekehrt. Vielleicht sollte Ihr Kodierungsstil-Standard eher einer Kodierungsstil-Richtlinie ähneln, damit Sie diesen Killer-Hacker mit einer gewissen Stilabweichung weiterhin blitzschnellen und erstaunlichen Code schreiben lassen können, aber stellen Sie sicher, dass alle anderen das verstehen, bis sie seinen epischen Hacker erreichen Status, müssen sie die Regeln befolgen (oder sogar helfen, nach ihm aufzuräumen).

Natürlich ist dies ein Management-Albtraum, aber das Managen von Tech-Leuten ist im Allgemeinen sowieso ein bisschen wie das Hüten von Katzen. Die meisten Unternehmen haben "Stilrichtlinien" und keine "Stilstandards". Und Builds schlagen nicht fehl, und Codeüberprüfungen schlagen nicht automatisch aufgrund von Stilverstößen in allen Unternehmen fehl. Sie können entscheiden, welches Management-Problem Sie haben möchten - erlauben Sie Superstar-Hackern und haben Sie "Richtlinien" oder verlieren Sie die Superstars und haben Sie ein einheitlicheres Code-Styling.

Jim
quelle
1
Betreff: "Die meisten der Super-Hacker, die ich kenne, haben ein Ego, das genauso groß ist wie ihre Fähigkeiten": Ich glaube nicht, dass das wahr ist. Sie scheinen große Egos zu haben, weil sie sich nicht automatisch der Meinung anderer widersetzen, aber die, die ich kenne , waren alle sehr aufgeschlossen, wenn Sie ein gutes Argument für das abgeben können, was Sie tun. (Obwohl ich nicht sicher bin, ob "Ego" genau das Gegenteil von Konformismus ist.)
Ruakh
2
"Die meisten der Super-Hacker, die ich kenne, haben ein Ego, das genauso gut ist wie ihre Fähigkeiten, und sie möchten, dass sich die Organisation an sie anpasst, nicht umgekehrt." Ich bezweifle, dass ein Entwickler so gut ist, dass er die Kosten einer solchen Einstellung aufwiegen würde, und ich bezweifle, dass ein solcher Ingenieur sehr lange angestellt sein würde.
Andy
1
"Und Builds scheitern nicht und Codeüberprüfungen scheitern nicht automatisch an Stilverstößen bei allen Unternehmen." Eigentlich habe ich für ein Unternehmen gearbeitet, das diesen Weg tatsächlich gegangen ist, und das Ergebnis war objektiv besser als vor der laxen Durchsetzung des Standards.
Andy
3

Verstehe ich etwas aus diesem Dokument und dem Zitat oben in dieser Frage falsch? Können die Leute den Codierungsstil wirklich einfach ignorieren?

Es hängt davon ab, ob.

Der Ort, an dem ich gerade bin, hat keinen Styleguide und es ist keine große Sache. Es gibt einige geringfügige Unterschiede zwischen den Programmierern, die jedoch die Lesbarkeit, Auffindbarkeit oder Konsistenz in keiner sinnvollen Weise beeinträchtigen. Und wir haben eine ausreichend große Gruppe und eine ausreichend starke Kultur, um sicherzustellen, dass jedes neue Mitglied des Teams in die Reihe fällt (oder auch).

In früheren Unternehmen sind wir schnell gewachsen und hatten einige Leute, die mit der Sprache und ihren Redewendungen nicht vertraut waren. In dieser Firma bedeutete der Zustrom von Menschen, dass es keine Kultur gab, die gutes Schreiben erzwang. Und die Leute, die neu in der Sprache waren, meinten, es gab eine Menge Dinge, die angepasst werden mussten. Dort waren automatisierte Stilprüfer der effizienteste Weg, die Anpassungen vorzunehmen, und ein aktueller schriftlicher Leitfaden war der beste Weg, die neuen Leute in unseren Erwartungen zu schulen.

Persönlich kümmere ich mich nicht sehr um Styleguides und noch weniger um die automatisierte Durchsetzung von Styles. Wenn die Person nicht einmal die grundlegenden Redewendungen aufgreifen kann, warum beschäftigen Sie sie dann als Programmierer? Und wenn sie so schlecht im Team sind, dass sie ständig Code schreiben, mit dem andere nur schwer arbeiten können, warum beschäftigen Sie sie überhaupt?

Telastyn
quelle
1
Um nur den letzten Teil zu beantworten: Es war die Entscheidung des hohen Managements, einige Bibliotheken auszulagern. Und mein Team hat keinen Einfluss darauf, wer dort arbeitet. Ihr Codierungsstil ist völlig anders.
BЈови at
"Wir haben eine Gruppe, die groß genug ist und eine Kultur, die stark genug ist, um zu gewährleisten, dass jedes neue Mitglied des Teams in die Reihe fällt."
@ dan1111 - sicher? Ich meine, sie laufen wahrscheinlich darauf hinaus, "Ihre Teamkollegen nicht zu verärgern", aber die Frage wurde speziell zu Dokumenten und Veröffentlichungen gestellt.
Telastyn
2

Dies ist eher ein psychologischer Trick als eine wörtliche Interpretation, wie Codierungsstile am besten gehandhabt werden können. Es macht das Team / Unternehmen / Manager / Leiter weniger autoritär. Ich würde mich eher auf situative Ausnahmen als auf persönliche konzentrieren. Unabhängig vom Kodierungsdokument besteht das Ziel darin, die Lesbarkeit zu verbessern. Verwirrender Code sollte adressiert und geändert werden, wenn dies als notwendig erachtet wird. Es gibt viele Tools, mit denen Sie sich um die kleinen, mühsamen Dinge kümmern können. Verwenden Sie sie also.

Zu jeder Regel gibt es Ausnahmen. Geben Sie den Menschen "etwas" Spielraum. Je weniger alle an der Akzeptanz der Regeln für den Codierungsstil beteiligt sind (Welcome new guy.), Desto mehr sind sie geneigt, sich wehren zu wollen. Viele Dinge sind schwarz und weiß, aber einige sind offen für Interpretationen.

Das Ziel sollte sein, alle in den Geist der Kodierungsrichtlinien einzubeziehen, anstatt über jedes Detail und jede Interpretation zu streiten.

Ja, es wird eine Zeit geben, in der die Verwendung des Dokuments im Codierungsstil keinen Sinn ergibt und professionelle und erwachsene Entwickler den Unterschied kennen sollten.

JeffO
quelle
Ihr Vorschlag ist es also, einen Job in Jenkins bereitzustellen, der die Datei neu formatiert, sobald jemand etwas eingecheckt hat? Übrigens ist der "Wackelraum" etwas Ähnliches wie in dieser Antwort.
Freitag,
Wenn es die Arbeit erledigt und eine einstündige Diskussion über etwas verhindert, das sich mühelos korrigieren lässt, warum nicht. Die Antworten sind ähnlich, aber ich denke, es hat mehr mit der Moral und der Denkweise des Teams zu tun. Sie können Anarchie ohne Codierungsstandards genauso einfach haben wie zu viele.
JeffO
2

Basierend auf Ihren Änderungen, Ihr Ziel für das richtige Ziel.

Die Verwendung eines Styleguides hat viele Vorteile, aber die beiden wichtigsten sind meiner Meinung nach die Lesbarkeit des Codes zwischen Teammitgliedern und das Fehlen von "albernen" Commits (wie nur Leerzeichen oder zusätzliche Zeilen und dergleichen).

Um Ihr Ziel zu erreichen, sollte der von Ihnen gewählte (oder erstellte) Styleguide einfach und leicht einzuhalten sein. Versuchen Sie, sich wirklich auf das zu konzentrieren, was Sie brauchen. Niemand mag es, zurück zu gehen und riesige Code-Swatches neu zu schreiben, nur um einen Linter glücklich zu machen. Aber es könnte immer noch einen Nutzen geben.

Stellen Sie sicher, dass Ihre Teammitglieder den Styleguide genehmigen. Wenn Sie sie daran festhalten, stellen Sie sicher, dass sie einverstanden sind, oder es wird ein ewiger Kampf.

Stellen Sie sicher, dass Stilverstöße eine "Warnung" und kein "Fehlschlag" sind. Lassen Sie einen Menschen entscheiden, ob der Verstoß auf einen Fehlschlag trifft. Der Grund dafür ist einfach. Ich glaube an einen einfachen Arbeitsablauf. Wenn irgendwo in der "Test" -Phase ein "Fehler" auftritt, können Sie nicht auf die Produktion pushen. Ich benutze es als Sicherheit. Selbst Hotfixes müssen eine Testphase durchlaufen (wenn auch eine kürzere). Können Sie wirklich sagen, dass Sie diese kritische Fehlerbehebung nicht auf die Produktion übertragen, weil jemand ein "anstelle eines" verwendet hat? Was ist mit der Verwendung einer for-Schleife anstelle einer jeden? Was, wenn eine for-Schleife gegenüber jeder Verbesserung aufweist? Sind Entscheidungen, die eine Maschine (Linter) nicht treffen kann, stellen Sie sicher, dass ein Mensch die Warnung beurteilt und die Maschine keinen Fehler verursacht.

Wenn Sie den Styleguide ignorieren, müssen Sie das von Fall zu Fall beurteilen. Stellen Sie sicher, dass die "Abweichung" einen echten Grund hat. Sie werden kommen. Die Aufgabe der Prüfer besteht darin, sicherzustellen, dass es einen guten und keinen trivialen Grund für die Abweichung gibt.

coteyr
quelle
0

Ich denke, die Stimmungsmusik hier ist, dass, wenn die akzeptierte Weisheit ist, dass die Codierungsstandards falsch oder unvollständig sind, es das kleinere von zwei Übeln ist, auf das man drängt, wenn die Entwickler im Allgemeinen einverstanden sind, anstatt den mühsamen Prozess des Erhaltens des zu durchlaufen Dokument geändert und erneut überprüft.

Es sollte auch beachtet werden, dass die Richtlinien zur Durchsetzung des Codestandards von gestern normalerweise nicht so sind, wie sie jetzt durchgeführt werden.

Früher haben Sie einfach das Buch am Ende des Entwickler-Schreibtisches hochgehalten und Kapitel und Vers zitiert, warum sein / ihr Code gegen Abschnitt 34.5.5767 verstößt.

Wir haben jetzt statische Codeanalyse- und Autodokumentationstools, die einen Großteil der mühsamen Arbeit mit Codestandards überflüssig machen.

Andernfalls können Sie es dem Entwickler zurückgeben, eine Codeüberprüfung durchführen oder es einfach selbst ändern, wenn Sie dazu neigen.

Robbie Dee
quelle
Angenommen, der Codierungsstil ist ideal, und wenn dies nicht der Fall ist, können die Benutzer ihn ändern. Dürfen die Leute es auch in diesem Fall ignorieren?
Freitag,
Schwer zu sagen - vor allem, wenn kein allgemeiner Konsens besteht. Ich vermute, dass hier das Dienstalter und / oder die Vermittlung von Entwicklern eine Rolle spielen würden ...
Robbie Dee,
0

Ihre Frage dreht sich um die Abstimmung der beiden Anführungszeichen. Ich denke, was Treecoder geschrieben hat, beantwortet Ihre Frage im Allgemeinen. Es repräsentiert Ihr Leitprinzip in Schreibstilrichtlinien.

Da Sie für die Festlegung der Richtlinien für den Codierungsstil verantwortlich sind (dies ist meine Annahme, da Sie der Verfasser des Dokuments sind), können Sie entscheiden, was optional ist oder nicht, und inwieweit Sie Flexibilität im persönlichen Stil Ihres Dokuments zulassen Mannschaft. Bei Bedarf erhalten Sie ein Feedback. Aber wenn die Richtlinien einmal vorhanden sind, bleiben Sie dabei.

So können Sie die beiden scheinbaren Widersprüche wie folgt in Einklang bringen:

Denken Sie an das erste Zitat, das an Sie als Stilentscheider gerichtet ist, bevor das Leitliniendokument vollständig ist. Wenn ein bestimmter Stilstandard für Ihr Team nicht funktioniert, gilt dies als "starker persönlicher Einwand", und Ihre Richtlinien werden dies widerspiegeln.

Stellen Sie sich das zweite Zitat vor, das an Ihr Team adressiert ist, nachdem das Dokument vollständig ist. Wenn Sie die Richtlinien für das Team festgelegt und das Dokument geschrieben haben, ist es wichtig, dass alle Entwickler in Ihrem Team die Stilrichtlinien einhalten.

Price Jones
quelle
0

Es spielt keine Rolle, welchen Codierungsstil die Leute haben, solange sie einen Codierungsstil haben. Wenn ein Unternehmen auf einem Kodierungsstil besteht, tritt es ungefähr 49% seiner Entwickler auf die Zehen.

Das Problem ist, dass es einer großen Anzahl von Entwicklern nichts ausmacht, ihren Codierungsstil an einen in einem Unternehmen vorherrschenden Standard anzupassen, ihnen aber sehr viel daran liegt, von denen erzählt zu werden, die sich besser mit Unternehmenspolitik auskennen (oder sich nur mehr um sie kümmern).

Das bedeutet, dass die Erstellung eines Kodierungsstandards eine enorme Zeitverschwendung, eine Quelle endloser Auseinandersetzungen, die Ursache für unendlichen Groll und insgesamt einen enormen Zeit- und Energieverbrauch bedeuten kann.

gnasher729
quelle
0

Ich habe mich jahrelang mit Richtlinien für Codestile auseinandergesetzt, wie viele andere in diesem Forum. Dies schließt sowohl Kampfstil-Anleitungen ein, die ich für verabscheut halte, als auch den Versuch, andere dazu zu ermutigen, Stil-Anleitungen zu verwenden, um ihren Stil zu zügeln, damit er insgesamt besser lesbar ist.

Das Unternehmen profitiert von einem gemeinsamen Kodierungsstandard. Bei der Entwicklung von Software für ein Unternehmen sind viele wichtige Aspekte zu berücksichtigen, beispielsweise, wie wir neue Entwickler darin schulen, den Code der vorherigen Generation zu übernehmen. Wenn Sie Code schreiben, denken Sie nicht immer darüber nach. Tatsächlich entscheiden sich viele Programmierer dafür, nicht einmal darüber nachzudenken, wie andere sich dem Code 5 oder 10 Jahre nach ihrem Tod nähern möchten. Ein Coding-Style-Guide ist eine Möglichkeit für ein Unternehmen, sich auf diese 5- und 10-Jahres-Ziele zu konzentrieren, um Entwicklern die Arbeit im größeren Rahmen zu erleichtern.

Andererseits sind Coding-Style-Guides notorisch unvollkommen, da es nicht möglich ist, einen perfekten Coding-Style zu entwickeln und aufzuschreiben. Tatsächlich stoßen Sie auf lustige Eckfälle, in denen mathematische Beweise allmählich scheitern, wenn Sie versuchen, sie zu perfektionieren. Wir wissen also, dass die Coding-Style-Guides nicht perfekt sind. Sie konzentrieren sich möglicherweise nicht perfekt auf das, was wir 5 bis 10 Jahre später brauchen.

Wenn wir einen Codierungsstil "erzwingen" würden, würden wir später Wert für Wert opfern. Dies würde als "Investition" bezeichnet, wenn wir sicher sein könnten, dass sich unsere Bemühungen auszahlen, aber jeder Entwickler, der mit einem schlecht geschriebenen Programmierstil-Leitfaden gearbeitet hat, kann bezeugen, dass diese "Lesbarkeits" -Vorteile teuer bezahlt werden, wenn er die Entwickler ablenkt weg von ihrem Code. Nach meiner Erfahrung gibt es nur eine sehr kleine Anzahl von Fällen, in denen erzwungene Codierungsstile von Nutzen sind, typischerweise bei Software für Kunden mit einmaliger Gletscherwirkung, bei denen Software 30 oder 40 Jahre lang verwendet werden kann!

Stattdessen empfinde ich es als am effektivsten, einen Coding-Style-Guide als Manifest zu behandeln: "Wir glauben, dass dies der beste Coding-Style für unsere Gruppe ist." Es ist ein Bündel flüssiger Gedanken, die in Worten dokumentiert sind. Das Wort "glauben" ist wichtig: Wenn sich die Überzeugungen ändern, sollten sich auch die Codierungsstilrichtlinien ändern.

Hier kommen Ihre "starken persönlichen Einwände" ins Spiel. In einer "perfekten" Welt schreiben Sie den Code, den Sie für am besten halten, und Sie leben mit den Konsequenzen. Wir übersehen oft die "weichen" Konsequenzen, wenn wir programmieren, aber in diesem Fall sind sie wichtig. Ich habe kein Problem damit, dass Sie in Ihrem eigenen Stil schreiben, wenn es Ihnen nichts ausmacht, dass ich Ihnen nie etwas Wichtiges und Langlebiges gebe, um mich zu entwickeln.

Stellen Sie sich das ganze System wie einen Golfplatz vor. Der Codierungsstil ebnet den einfachen Weg den Fairway hinunter. Wenn Sie sich an den Kodierungsstandard halten, stellen wir sicher, dass das Leben so einfach wie möglich ist. Je weiter Sie sich mit Ihren eigenen Codierungsstandards auf die Probe stellen, desto mehr müssen Sie dem Team Ihren Wert beweisen.

Wenn ich am Montagmorgen komme und feststelle, dass Sie das ganze Wochenende damit verbracht haben, ein Problem zu lösen, über das wir uns ein Jahr lang geärgert haben, und das Sie in Ihrem eigenen "speziellen" Codierungsstandard getan haben, werde ich Ihnen das nicht sagen repariere es. Ich werde dir sagen, du sollst duschen gehen. Wenn Ihr "spezieller" Codierungsstandard ausnahmsweise "speziell" ist, kann ich sogar einem Einsteiger vorschlagen, den Code zu "überprüfen", um das Wissen darüber zu verbreiten, wie Ihr Code funktioniert, und beiläufig zu erwähnen, dass er / sie dies tun sollte, wenn etwas schwer lesbar erscheint Räume es auf. Sie haben dem Unternehmen an diesem Wochenende so viel Wert gegeben, dass Sie nicht einmal die ungeheuren Verstöße gegen die Codierungsstandards erwähnen sollten, die Sie begangen haben.

In dieser Golfmetapher gibt es natürlich keine Grenzen. Wenn ich Sie auffordere, eine einfache Aufgabe zu erledigen, vielleicht neue Felder zu einem Formular hinzuzufügen, und Sie beschließen, die Gelegenheit zu nutzen, den gesamten Formular-Ausfüll-Code mit einer Reihe von schattigen Zeichen wie Define-Makros an Ihren Stil anzupassen und einige schreckliche Template-Meta-Programmiertechniken, die Sie gerade aus dem Stapelaustausch gelernt haben, werden Sie gebeten, zurück zu gehen und sie zu reparieren. Sie haben sich entschieden zu handeln, das sind die Konsequenzen.

( Haftungsausschluss: Ich habe diese Implementierung für is_base_ofdas Lösen einer einfachen Aufgabe vollständig geschrieben und mir jedes bisschen Hölle verdient, das ich dafür von den leitenden Entwicklern bekommen habe. Ich sage, es hat sich gelohnt. Ich bekomme immer noch jedes Mal eine fröhliche Lachblase, wenn ich Blick auf , wie das Muster Keile wie 7 unabhängige Teile der C ++ Spezifikation zusammen etwas Erstaunliches zu tun. Nehmen Sie das, Sie Senior Entwickler! das ist , was Sie für das Verbot bekommen boostan diesem Projekt! )

Cort Ammon - Setzen Sie Monica wieder ein
quelle
-1

Am besten scheint man den automatisierten Code-Formatierer zu verwenden, der in fast jeder Abstiegs-IDE integriert ist und für fast jede mehr oder weniger verbreitete Programmiersprache existieren sollte. Auf diese Weise werden unnötige Arbeiten und Reibungsverluste bei der Codeüberprüfung vermieden.

Es ist völlig vernünftig, von allen Entwicklern die Gewohnheit zu fordern, den Formatierer auf den neu erstellten Abschnitt des Codes anzuwenden.

Das Schlimmste, was Sie tun können, ist, einen benutzerdefinierten Codierungsstil anzufordern, den der vorhandene Code-Formatierer nicht unterstützt.

In relativ seltenen Fällen kann ein Abschnitt anders formatiert sein, wenn der Formatierer dies wirklich schrecklich macht. In der Regel ist es jedoch besser, den Formatierer so anzupassen, dass alle ihn besser formatieren können.

Es mag einige nützliche Regeln geben, die der Formatierer nicht unterstützen kann (wie man zum Beispiel Variablen benennt), aber wenn nur diese übrig bleiben, sind sie relativ einfach zu befolgen.

h22
quelle
Leider beantwortet dies die Frage nicht direkt . +1 sowieso für gute Ratschläge und eine praktische Lösung für sinnloses Hin und Her über Stil. Konfigurieren Sie den Formatierer und fertig.
Bruno Schäpper
Ich denke immer noch, dass nur ein Formatierer die beste Lösung für das Problem mit dem Codierungsstil ist, da er sowohl einen einheitlichen Stil bietet als auch die Möglichkeit beseitigt, alle neuen Entwickler für die falsch platzierten Leerzeichen und Zeilenenden ohne Notwendigkeit zu mobben. Ich habe gesehen, dass dies in den realen Situationen sehr gut funktioniert. Deshalb empfehle ich diese Lösung und werde die Frage nicht entfernen.
22.
-1

Tatsächliche Lösung (nicht nur Philosophie)

Lassen Sie zu, dass Codekommentare das Flusen überschreiben, und erstellen Sie ggf. Listen mit diesen Kommentaren (wie dies bei häufig ausgeführten Aufgaben mit Kommentaren der Fall ist).

Geben Sie Ihren Entwicklern die Möglichkeit, außerhalb der Konvention explizit und mit gutem Grund zu arbeiten - und während der Codeüberprüfung durch Menschen kann dies bei Bedarf überprüft werden.

Adam Tolley
quelle