Kann es zu viel Einheitlichkeit bei den Kodierungsstandards geben?

12

Gibt es zu viel Uniformität? Wo ich arbeite, haben wir natürlich Standards, einschließlich Namenskonventionen, Architekturen, Frameworks, die genutzt werden können. In letzter Zeit wurde jedoch viel kritisiert, was ich für mehr Stil halten würde.

Schreiben Sie beispielsweise ifAnweisungen in mehreren Zeilen gegen eine Zeile, indem Sie den c # ??-Null-Koaleszenzoperator verwenden, anstatt beispielsweise den == nullAbstand für Einrückungen usw. anzugeben.

Es scheint mir, dass dies mehr zu einer persönlichen Stilwahl wird und nicht unbedingt team- oder firmenübergreifend einheitlich sein muss. Was eine Person denkt, liest sich klarer, was eine andere vielleicht nicht. Hat diese "zusätzliche" Einheitlichkeit einen gewissen Wert?

Gratzy
quelle
2
Hallo Gratzy, Programmers.SE ist kein Diskussionsforum ; Wir sind hier, um echte Probleme zu lösen, mit denen Sie möglicherweise konfrontiert sind. Haben Sie ein aktuelles Problem, das Sie lösen möchten? Wenn ja, können Sie Ihre Frage umformulieren, um die Antworten konstruktiv zu halten und die Gefahr einer Diskussion zu vermeiden?
1
@Gratzy um es anders auszudrücken, was wären die Kriterien für eine richtige Antwort in einer Situation, in der Sie persönlich stehen?
2
@ Mark Trapp laut FAQ sind dies die Kriterien für eine Frage Alle subjektiven Fragen werden als konstruktiv angesehen. Wie definieren wir das? Konstruktive subjektive Fragen… 1. Antworten inspirieren, die erklären, warum und wie. 2. neigen dazu, lange, nicht kurze Antworten zu haben. 3. einen konstruktiven, fairen und unparteiischen Ton haben. 4. zum Erfahrungsaustausch über Meinungen einladen. 5. darauf bestehen, dass die Meinung mit Fakten und Hinweisen untermauert wird. 6. sind mehr als nur sinnloser sozialer Spaß. Ich glaube, meine Frage deckt mindestens die ersten 4 ab
Gratzy
2
@Gratzy auch aus der FAQ: "Sie sollten nur praktische, beantwortbare Fragen stellen, die auf tatsächlichen Problemen beruhen, denen Sie gegenüberstehen. Gesprochene, offene Fragen beeinträchtigen den Nutzen unserer Website und schieben andere Fragen von der Startseite."
2
@ Mark Trapp Ich habe bereits Kriterien für eine akzeptable Antwort angegeben und ja, wie gesagt, dies ist ein tatsächliches Problem und ehrlich gesagt aus dem Interesse an der Frage und den Antworten, denen ich sagen würde, stimmen andere zu.
Gratzy

Antworten:

16

Gleichförmigkeit ist kein Problem (es ist gut), aber Steifheit oder Inflexibilität können es sein. Wenn Sie im Streben nach Einheitlichkeit dogmatisch werden, kann der Schaden, den Sie dem Team zufügen, größer sein als der Nutzen, der sich aus der (möglicherweise) resultierenden Einheitlichkeit ergibt.

Es ist am besten, nur den grundlegenden Stil für die wichtigsten Dinge festzulegen (Benennungs- und Großschreibungsstandards, Einrückung, Zeilenumbrüche und Platzierung von Klammern usw.), Empfehlungen für weniger wichtige Dinge festzulegen (wenn das Anweisungsformat, andere Leerzeichen in Klammern usw.). und dann mach dir keine Sorgen um den Rest.

Nicole
quelle
1
Ich war dort
+1, sagte was ich meinte, aber besser!
FrustratedWithFormsDesigner
@ Pierre ist das der Grund, warum Sie jetzt freiberuflich tätig sind? :)
Nicole
Nicht wirklich, aber ich habe einige obsessive Leute über Richtlinien getroffen. Es ist beängstigend, wie extrem es sein kann. Ich denke, Sie haben das Limit ziemlich gut definiert.
7

Wenn über die Jahre hinweg möglicherweise Dutzende von Menschen an einem Projekt arbeiten, wird es manchmal verwirrend, wenn Sie Stile wechseln müssen. Stellen Sie sich vor, Sie lesen ein Buch, in dem unterschiedliche Kapitel von unterschiedlichen Autoren verfasst werden, die den Schreibstil nur wenig beibehalten. Es ist möglich, aber es ist ärgerlich.

Die meisten IDEs können heutzutage Stile erzwingen. Sie können daher bei Bedarf (als Teil des Projektquellcodes) eine IDE-Voreinstellungsdatei verteilen, die den ausgewählten Codierungsstil angibt und von jedem installiert und zum Formatieren des von ihnen geschriebenen Codes verwendet wird . Ich wette, es gibt sogar Möglichkeiten, Code beim Einchecken neu formatieren / formatieren zu lassen (obwohl ich dies noch nicht untersuchen musste).

FrustratedWithFormsDesigner
quelle
Ja, Sie könnten wahrscheinlich irgendwo ein Ameisenskript hineinstecken.
Michael K
1
Zumindest IntelliJ hat die Option, den Code vor dem Einchecken neu zu formatieren.
Nicole
3

Ein Fall von Überhomogenität, den ich gesehen habe, besteht darin, einen einzigen Standard zu haben, der für alle Programmiersprachen unabhängig von ihrer Eignung gilt:

  • Entmutigend gotoauch in Sprachen wie C ohne try... catch.
  • Verwenden von InitialCapsNamen (wie in MFC und C # von Microsoft) in JavaScript, wo sich die Standardbibliothek befindet initialLowerCase.
dan04
quelle
2

Ich glaube nicht, dass es zu viel Uniformität gibt. Allerdings finde ich oft zu viel SPEZIFIZITÄT in Codierungsstandards. Die Vorteile für alle, die die öffnende Klammer in eine separate Zeile setzen, sind bestenfalls zweifelhaft und überwiegen nicht die Zeit, die sie damit verbringen, sich darüber zu streiten oder kosmetische Probleme im Code zu beheben.

JohnFx
quelle
2
@Tungano Ich könnte nicht mehr zustimmen. Das Paradoxon von Codierungsstandards ist, dass sie es wert sind, verwendet zu werden, aber sie sind es nicht wert, darüber zu streiten.
Charles E. Grant
3
Ich verstehe nicht, wie Sie diese Argumente vermeiden können, wenn Sie einem Programmierer einen bestimmten Stil aufzwingen. Tatsächlich würde ich argumentieren, dass die Anpassung eines Programmierers an einen Stil, den er nicht mag, diese Argumente oder zumindest Ressentiments ANREGT.
JohnFx
1
@JohnFx, denn die meisten Programmierer werden feststellen, dass die Konsistenz des Stils einen viel größeren Beitrag zur Codequalität und Wartbarkeit leistet als die Wahl eines bestimmten Stils. Nach meiner Erfahrung können Sie eine schnelle Nasenzählung des Teams durchführen, sehen, was die Leute mögen und was nicht, und schnell zu einem Konsens kommen. Gelegentlich hat jemand einen eigenartigen Bugaboo, und Sie nehmen ihn auf, und dann geben sie dem Bugaboo eines anderen nach. Wenn ich das Team fünf Minuten lang darauf anspreche, warum der Kamelkoffer böse ist, gebe ich ihn einfach auf und gebe nach, um meine persönliche Flexibilität zu testen.
Charles E. Grant
1
Ich gehe davon aus, dass die meisten Programmierer der Meinung sind, dass die Konsistenz des Stils einen so großen Beitrag leistet, aber das tut es wirklich nicht. Wie es scheint, ist es ärgerlich, sich Code anzusehen, der nicht zu Ihrem Haustierstil passt, und es ist eine gute Möglichkeit, kleinere kosmetische Probleme aufzuräumen, indem Sie einen Codeblock durchgehen. Sieh mal, ich war auch auf diesem Zug, bis mir klar wurde, dass ich mich auf die Vergoldung konzentrierte und nicht auf das Lieferbare.
JohnFx
1
Ich arbeite mit Code aus unserem deutschen Team, ein paar OSS-Projekten und etwas altem Code, den wir haben, sowie unseren aktuellen Sachen. Manche sind C, manche C ++, manche C #. Ich muss also die ganze Zeit mit mehreren unterschiedlichen Codestilen arbeiten. Wenn Sie das tun, erkennen Sie, wie kleinlich die Stilrichtlinien sind, die in Standards vorgeschrieben werden. Wenn ich von einem zu einem anderen Projekt wechseln kann, kann ich jemanden damit beauftragen, seine {} an verschiedenen Orten zu platzieren. Aus diesem Grund denke ich, dass der einzige Standard, der verdammt noch mal einen Wert hat, die 1-Regel ist: "Konsistenz in jedem Projekt".
gbjbaanb
2

Ich hätte 2 Argumente für die Einheitlichkeit:

  • Förderung des kollektiven Eigentums. Dass jemand den Code eines anderen ändern kann, ohne befürchten zu müssen, dass jemandes "Baby" durch die Änderung verletzt wird. Eine Art "Wir sind alle zusammen in dieser" Mentalität.

  • Einfaches Hinzufügen. Wenn etwas schon woanders gemacht wurde, dann kann dieses evtl. genommen und wiederverwendet werden. Bestimmte Konventionen können dazu beitragen, dass die Dinge manchmal leichter zu lesen oder zu ändern sind. Dies ist ein weiterer Vorteil für mich.

JB King
quelle