Ich hasse einen unserer Kodierungsstandards und es macht mich verrückt, wie man ihn verarbeitet. [geschlossen]


18

Haftungsausschluss : Nicht so übertrieben wie der Titel vermuten lässt, aber es macht mich trotzdem unwohl. Ich werde es nur ehrlich ausdrücken, also nimm es mit einem Körnchen Salz. Stellen Sie sich einfach vor, ich spreche von dem Codierungsstandard, mit dem Sie nicht gerne arbeiten.

Bearbeiten : Die Tatsache, dass ich es nicht mag, bedeutet nicht, dass ich es nicht benutze oder erzwinge.


Ich habe mich entschlossen, diese Frage im Geiste zu stellen, wie man über einen Standard hinwegkommt, den man nicht mag, und keine Hilfe zu bekommen, wie man besser argumentieren kann, wie er geändert werden kann (auch wenn Kommentare zu diesem letzten Teil erwünscht sind). Außerdem arbeite ich in einem großen Unternehmen und eine solche Veränderung von etwas, das so lange gelebt hat und das so wenig zählt, ist unwahrscheinlich.

Der Standard ist der öffnende geschweifte Klammer-auf-Standleitung-Standard:

somefunction()
{
    //...
}

Anstelle des * klar überlegenen * (beachte den scherzhaften / frustrierten Ton):

somefunction() {
    //...
}

Meine persönlichen Argumente gegen den Standard:

  • Der Code wird aufgebläht : zusätzliche unnötige Zeilen
  • Schwieriger zu tippen : Obwohl ich wahrscheinlich nur mit dem Standard zu kämpfen habe, weiß ich, dass ein zusätzlicher Tastendruck nicht so schlimm ist.
  • Nicht einfacher zu lesen : Ich beginne mit dem Lesen einer Funktionsdeklaration, einer if-Anweisung oder einer anderen Scope-Stacking-Anweisung und muss bereits keine öffnende Klammer suchen. Verschachtelte Blöcke mit diesem Standard machen mich aus irgendeinem Grund nur wütend.
  • Wird von Leuten mit Microsoft IDE-Hintergrund verwendet : Ich denke, es sollte einen oder mehrere Gründe für einen Standard geben, und nicht nur ein Paradigma.

Ihre Argumente (und meine Art, ihnen intern zu antworten):

  • Einfacher zu lesen, weil Sie sofort sehen können, wo Blöcke beginnen und enden : Ich kann das nicht verstehen. Was nützt der Block, wenn Sie nicht wissen, wem er gehört, und Sie müssen ihn rückwärts lesen.
  • Ich habe es in einer Microsoft IDE verwendet und es hat mir gefallen : Uhh ... ok?
  • Es ist in der Norm : * kriecht *

Bin ich der Einzige, der mit einer Stellungnahme gegen einen bestimmten Standard kämpft? Wie sind Sie darüber hinweggekommen? Was ist Ihre Meinung darüber, was dieser bestimmte Standard sein sollte (nur zum Spaß)?


6
wie lange benutzt du den standard den du "hasst"? und verwenden sie andere standards "parallel"? Ich meine, könnte es nur eine Frage der Gewöhnung sein? Muss zugeben , ich verwendet , um den gleichen Standard zu hassen, aber nach etwa einem Jahr zu schreiben , dass die Art und Weise ausschließlich dieser Hass weg vollständig verschwunden ist
gnat

54
Sie lassen das eindeutig erforderliche Leerzeichen zwischen dem Ende der Funktionsdeklaration und der geschweiften Klammer weg! Du musst brennen!
Pap

5
Lebe damit. Das ist ein sehr, sehr kleines Problem. Sei froh, dass das das einzige ist, was dich stört. Wenn Sie die Sprache ändern, sollten Sie auch in der Lage sein, sich an den neuen Stil anzupassen. Einige Wochen damit zu arbeiten, sollte das Gefühl beheben, dass es "falsch" ist.
Schlingel

8
Used by people who come from a Microsoft IDE backgroundEs ist keine Microsoft-Sache, z. B. verwenden der Linux-Kernel und K & R den gleichen Stil.
Lucas

5
Wenn Sie Ihre ganze Energie aufwenden, um alles über das Triviale in Rage zu bringen, werden Sie für die Dinge, die wirklich wichtig sind, nichts mehr übrig haben.
Blrfl

Antworten:


47

Wenn Sie darüber hinwegkommen wollen - es gab ein Zitat von Torvalds:

Schlechte Programmierer sorgen sich um den Code. Gute Programmierer sorgen sich um Datenstrukturen und ihre Beziehungen.

Überlegen Sie nun, woher es kommt, dass Programmierer, die sich Gedanken über eine so kleine Sache wie den durch ihren Codestandard erzwungenen Klammerungsstil machen? Ist Ihre Codebasis ansonsten so makellos, dass nur die Klammerung einen Streit wert ist?


2
Ich stimme vollkommen zu. Wenn Sie alle anderen Probleme gelöst haben und entscheiden möchten, wo die Locken abgelegt werden sollen, sind Sie besser als jedes andere Softwareprojekt auf dem Markt.

4
Ist Ihre Codebasis ansonsten so makellos, dass nur die Klammerung einen Streit wert ist? - Dies wäre eine rhetorische Frage - eine solche Codebasis hat es in der Geschichte noch nie gegeben!
MattDavey

12
Ich möchte hinzufügen , dass Linus Nüsse geht , wenn Sie zu begehen forma git Nachrichten „falsch“ wired.com/wiredenterprise/2012/05/torvalds_github
Giles Roberts

Das liegt daran, dass er die Tatsache kommentiert, dass Sie in ein Projekt einsteigen, Sie den Stilleitfaden des Projekts respektieren und Vorschläge einreichen, um ihn zu ändern ... ansonsten bleiben Sie bei ihrem Stil!
Rudolf Olah

1
@GilesRoberts: Linus ist verrückt, wenn Sie git commit-Nachrichten "falsch" formatieren, da dies mit dem etablierten Überprüfungsprozess nicht funktioniert. Eine, die seit 20 Jahren für das Projekt gut funktioniert und Hunderte von Menschen einbezieht. Einige Prozessregeln sind viel wichtiger als die Formatierung von Code.
Jan Hudec

66

Manche mögen es so wie du und andere nicht. So oder so wird sich jemand ärgern. Diesmal sind Sie gerade an der Reihe. Saugen Sie es auf und machen Sie mit der Arbeit weiter.


5
Ich denke, er fragt, wie er darüber hinwegkommen soll. Welches ist eigentlich eine ganz andere Frage.
Zachary Yates

18
Das Nichtbeachten des Standards führt zu einem schlimmeren Problem und nervt alle . "Saugen Sie es auf" in der Tat!
Frank Shearar

2
Genau. Man muss sich nur darum kümmern.
Cody

3
Ehrlich gesagt, es würde mich auch frustrieren, aber "sauge es auf" ist leider die richtige Antwort.
Sulthan

27

Ist der Teamstandard dokumentiert? Wenn ja, gibt es Gründe im Styleguide? Um ehrlich zu sein, ich musste es unzählige Male aufsaugen und echte Arbeit erledigen. Es gibt schlimmere Probleme zu haben, aber ich fühle dich - es rang immer noch (ich stimme dir übrigens im Stil zu).

Was mir dabei geholfen hat:

  1. Es wurde erkannt, dass ein einziger Stil echte Vorteile hat (egal was es ist). Oder zumindest ein paar Leute denken so .
  2. Schreiben Sie genau das, was Sie gerade getan haben, auf, warum es sich falsch anfühlt, damit Sie das Argument in Zukunft gut aufstellen können.
  3. Verwenden Sie ein Styling-Tool, um Himmels willen , es wird Ihre geistige Gesundheit retten. ReSharper , CodeMaid , StyleCop , JSLint , Checkstyle , usw. ... auch Visual Studio wird es für Sie tun .
  4. Kick ass auf dieses Projekt und seien Sie bereit für das nächste, wenn Sie die Standards setzen können.

7
+1 für (3), Bonuspunkte, wenn Sie es als Post-Pull / Pre-Push-Haken für SCM einrichten, auf dem Sie sich befinden.
Martin Green

1
Styling-Tools lassen dieses Problem verschwinden und sorgen dafür, dass die Leute ihr Geld dorthin stecken, wo ihr Mund ist. Wenn Sie wirklich looooooove geschweiften eine bestimmte Art und Weise klammern, dann Sie gehen , um Ihre Styling - Konfiguration ändern es warm und gemütlich für sich selbst zu machen. Andernfalls kann Ihr Mund verschlüsselt werden.
Calphool

16

Die Überlegenheit einer Konvention gegenüber der anderen ist * eindeutig willkürlich * .

Die Lesbarkeitsprobleme, mit denen Sie konfrontiert sind oder denen Ihre Teamkollegen mit Ihrem Standard konfrontiert wären, sind nur ein psychologischer Widerstand gegen Änderungen.

Das objektive Argument der Lesbarkeit spricht für * Konsistenz * über die gesamte Codebasis.


"nur" ein psychologischer Widerstand gegen Veränderung? Psychologische Widerstände gegen Veränderungen können sehr groß sein.
Giles Roberts

8

Denken Sie an eine Zeit zurück, in der Sie sicher waren , dass Sie in etwas Recht hatten, und im Laufe der Zeit merkten, dass Sie sich geirrt hatten oder zumindest vor all den Jahren überreagiert hatten. Berücksichtigen Sie die Möglichkeit, dass Sie sich erneut irren, und geben Sie den neuen Codierungsstandard oder die neue Verarbeitungszeit an, um Sie zu überzeugen.

Meine eigenen Maßstäbe waren, als ich ziemlich neu im Codieren war (sagen wir mal fünf Jahre in meiner Karriere), ob Multiword-Identifikatoren sein sollten WrittenLikeThisoder nicht written_like_this. Ich werde nicht einmal sagen, welche ich mochte, aber der Punkt ist, dass ich nach einiger Zeit die Seite gewechselt habe und dass es mir nach einiger Zeit egal war.


Ja, ich bin auch zwischen so und so hin und her gerissen. Ich neige in letzter Zeit zu Kleinbuchstaben. Es ist einfach klarer zu lesen.
Doug65536

1
Natürlich stecke ich jetzt in einigen Projekten mit so etwas fest. Naja, Namenskonventionen sind im großen Schema der Dinge nicht sehr wichtig.
Doug65536

1
Genau. Es spielt keine Rolle, in welcher Zeile sich die erste Klammer befindet. Es spielt keine Rolle, ob Sie MultiWordIdentifiers oder Multi_word_identifiers schreiben. Welchen Standard auch immer Ihr Unternehmen verwendet, machen Sie es mit, und in ein paar Monaten fällt es Ihnen schwer, sich daran zu erinnern, dass Sie es jemals anders machen wollten.
Carson63000

8

Der Standardunterschied, den Sie mit den geschweiften Klammern beschreiben, ist weitgehend willkürlich. Beide Wege sind gleichermaßen gut und für ein Unternehmen ist alles gut, solange jeder das Gleiche tut.

Das "eindeutig Überlegene", von dem Sie sprechen, ist die Art von Überlegenem, über die die Leute sprechen, wenn sie über Dinge sprechen, die sie "gewohnt" sind.

Sie werden sich früh genug daran gewöhnen und in einem Jahr oder so wird der andere Weg "eindeutig überlegen" sein.

Also kurz gesagt: damit umgehen.


eine klar überlegene Antwort
Mawg

5

Dieses spezielle Thema läuft auf einen Religionskrieg zwischen denen hinaus, die einen Stil dem anderen vorziehen. Sehr wenige Menschen sind ambivalent ...

Letztendlich ist weder richtig noch falsch.

Stilrichtlinien und Codierungsstandards gibt es aus einer Reihe von Gründen - und ein wichtiger Aspekt ist die Sicherstellung eines einheitlichen Layouts, mit dem die Anzahl offensichtlicher Fehler verringert und die Wartbarkeit verbessert werden soll.

Bin ich der einzige, der mit einer Stellungnahme gegen einen bestimmten Standard zu kämpfen hat?

Die kurze Antwort lautet "Nein", Sie sind nicht der einzige. Aber es gibt wichtigere Dinge, über die man sich Sorgen machen muss. Sogar in Standards, für die man einen Beitrag geleistet hat, wird es immer Kompromisse geben - sehen Sie einige der Aspekte, die es in C99 und C12 geschafft haben, die für mich keinen Sinn ergeben.

Sogar MISRA-C (auf das ich direkten Einfluss habe) enthält Punkte, mit denen ich persönlich nicht einverstanden bin - aber ich kann verstehen, warum andere dies für gerechtfertigt halten.

Wie bist du über diese hinweggekommen?

Und das ist die Antwort - anstatt sich darauf zu konzentrieren, warum es Ihnen persönlich nicht gefällt, versuchen Sie zu verstehen, warum die Person / Personen, die dem zugestimmt haben, dies getan haben.

In der Regel werden Regeln eingeführt (in einer schließenden Stalltür, nachdem sich das Pferd verriegelt hat), um ein vorheriges Problem zu lösen. Und wenn die Regel immer noch unsinnig ist, sprechen Sie mit dem Standardbesitzer und versuchen Sie, sie zu "erziehen".


4

Ich denke, Sie müssen einfach weitermachen. Ich werde versuchen, Ihre Notizen mit meinen eigenen Meinungen zu adressieren:

  • Bloats-Code

    Eine zusätzliche Codezeile ist überhaupt kein aufgeblähter Code, es sei denn, Sie schreiben Hunderte von Methoden in eine einzelne Klasse, wodurch Hunderte von zusätzlichen Zeilen hinzugefügt werden. Wenn Sie jedoch Hunderte von Methoden in einer einzelnen Klasse haben, haben Sie insgesamt ein anderes Problem.

  • Schwieriger zu tippen

    Darüber kann ich Ihnen nicht mehr widersprechen, Sie müssen die Eingabetaste drücken, um trotzdem zur nächsten Zeile zu gelangen. Was ist schwieriger zu tippen?

  • Schwerer zu lesen

    Ich bin der Meinung, dass jede Zeile in einem Code eine bestimmte Funktion haben sollte. Anschließend müssten Sie den Methodennamen in einer Zeile definieren und dann die öffnenden und schließenden Klammern in separaten Zeilen.

  • Wird von Personen mit MS IDE-Hintergrund verwendet

    Ähh .... ok?

Zusammenfassend scheint es so, als würden Sie sich nicht für einen .Net-Entwickler entscheiden, sondern für einen anderen Entwicklertyp, als wäre er minderwertig, da er eine IDE verwendet, die standardmäßig diesem Standard entspricht.


1
-1 Ich stimme in allen Punkten zu, halte aber keine Meinung zu den einzelnen Punkten für besonders hilfreich.
Caleb

4

Bin ich der einzige, der mit einer Stellungnahme gegen einen bestimmten Standard zu kämpfen hat?

Natürlich nicht. Treffen zur Bestimmung der Codierungsstandards sind schrecklich! Sie ziehen sich stundenlang hin und die Teilnehmer investieren persönlich in die Ermittlung ihrer bevorzugten (und - mit Ausnahme meiner - ausnahmslos falschen) Eigenheiten, die im Standard verankert sind. Am Ende ist niemand mit dem Ergebnis zufrieden. Wenn etwas schlimmer sein kann als das Treffen der Kodierungsstandards, dann sind es die formellen Kodierungsprüfungssitzungen in den mehreren Monaten, die auf die Festlegung des Standards folgen: Einige Leute versuchen, den Standard zu übernehmen, während andere ihn (absichtlich oder nicht) ignorieren, und Sie erhalten Stunden Feedback wie: In den Zeilen 132, 142, 145, 181, 195 und 221 von SillyFileConverter.cpp setzen Sie die öffnende Klammer in dieselbe Zeile, wenn der Codierungsstandard eindeutig angibt, dass sie in der folgenden Zeile stehen soll!

Wie bist du über diese hinweggekommen?

Auf ihre Art helfen die Treffen. Selbst wenn Sie mit demjenigen sympathisieren, der die erste Klammer auf derselben Linie wie die bedingte oder was auch immer verlassen hat, werden Sie sich dennoch darüber ärgern, dass Sie Ihre Zeit verschwendet haben, indem Sie sie nicht einfach aufgesaugt haben und dem dummen Standard gefolgt sind. Wenn der Typ ein Curmudgeon ist und immer wieder dasselbe macht, wird es noch ärgerlicher. Wenn Sie sich über dieses Verhalten ärgern, ist es um einiges einfacher, das Schreiben in einem Stil zu rechtfertigen, der sich ein wenig von dem unterscheidet, den Sie bevorzugen - schließlich möchten Sie sicher nicht dieser Typ sein .

Selbst wenn Sie keinen endlosen formalen Codeprüfungen unterzogen werden, können Sie versuchen, Ihren eigenen Code speziell auf die Einhaltung des Standards zu überprüfen. Es spielt keine Rolle, was Sie von dem Standard halten, Sie vergleichen nur, was Sie geschrieben haben, mit dem, was der Standard sagt. Wenn Sie sich bei jeder Nichtbeachtung selbst verärgern, kann dies zu negativen Rückmeldungen führen, die Sie zur Umsetzung des Standards benötigen.


"Beteiligen Sie sich an den Bemühungen zur Sprachnormung ... Haben Sie den gesunden
Beni Cherniavsky-Paskin

3

Mit so etwas erinnere ich mich an Gulliver in Lilliput. Die Liliputaner hatten einen Krieg geführt, um ein gekochtes Ei zu öffnen. (Der ursprüngliche Big-Endian-, Little-Endian-Kampf).

Nehmen Sie es zum Anlass, über sich selbst zu lachen. Sie kommen im Geschäft nicht oft genug vor.


2

Ihr spezielles Beispiel ist unglücklich, da einige damit einverstanden sind und andere nicht. Ich bin nicht einverstanden mit Ihren Argumenten gegen zum Beispiel und ich bin sicher, dass dies auch viele andere tun werden, genauso wie ich sicher bin, dass viele andere ihnen zustimmen werden. Es lässt mich fast denken, dass die Frage geschlossen werden sollte, da sie so subjektiv ist.

Die Frage, wie mit einem Standard umgegangen werden soll, mit dem Sie nicht einverstanden sind, ist jedoch möglicherweise beantwortbarer. Ich denke, die Antwort ist, dass, wo Styling-Richtlinien existieren und vereinbart und verwendet wurden, die Antwort nur darin besteht, zu grinsen, es zu ertragen und einfach damit umzugehen. Bedenken Sie, dass Konsistenz wichtiger ist. Wenn die Richtlinie ungenau oder falsch ist, kann es ein Argument für eine Änderung geben, dies ist jedoch stilistisch, sodass es außer den persönlichen Vorlieben kein wirkliches Argument gibt.

Ich stamme ursprünglich aus Java und habe mich daher an den von Ihnen genannten Standard gehalten. Ich bin dann zu mehr C ++ und C # übergegangen, wo der von Ihnen gehasste Stil verwendet wird. Aber es hat keine richtige oder falsche Antwort. Was wichtiger ist, ist, dass jeder einen Standard befolgt. Wenn ein Kodierungsstandard wie dieser stilistisch ist und nicht eindeutig falsch ist, führt der Versuch, zu argumentieren, nur zu Reibungspunkten im Team.


1
Wie in der Frage angegeben, handelt es sich bei der Frage nicht wirklich um den spezifischen Standard, sodass Ihr erster Absatz nicht von Belang ist.
Caleb

2

Ein Formatierer + Check-In-Haken ist ein guter Anfang. Aber es ist nicht genug, da das, was Sie schreiben, nicht so wichtig ist wie das, was Sie den ganzen Tag anstarren. In einigen Situationen ist der Ansatz des Emacs-Brillenmodus attraktiv: Behalten Sie den Stil der Dateien bei, aber zeigen Sie sie näher an Ihrem Stil an.

Meine Erfahrung damit - genau mit dem Problem konfrontiert, für das es geschrieben wurde, CamelCapsvs. underscore_separated- war, dass es schnell eher ärgerlich als hilfreich wurde, aber für ein paar Wochen hat es mir den Übergang geglättet, den Stil des Unternehmens (widerwillig) zu akzeptieren, und auch einen Auslass geboten um meine Wut zu kanalisieren ("ah ich hasse es, lass mich die Einstellungen nochmal anpassen ... da habe ich wenigstens etwas gemacht ") ;-)

Wie auch immer, der Brillen-Modus unterstützt die Platzierung von geschweiften Klammern nicht, Sie verwenden wahrscheinlich keinen Emacs und lesen den Code nicht ausschließlich in Ihrem Editor :-(
Aber der letzte Punkt ist auch eine Gelegenheit - wenn Sie den Code die meiste Zeit in lesen Als separates Tool können Sie das hacken, um Stile zu konvertieren, ohne sich Gedanken über das Neuformatieren von Roundtrips zu machen - weil es schreibgeschützt ist! Verwenden Sie insbesondere Greasemonkey, wenn Sie Code in einigen Webschnittstellen lesen.

Hier sind einige einfachere Ideen für eine milde Abschwächung:

  • Wählen Sie eine breitere, aber nicht so hohe Schriftart, um die verlorenen Bildschirmzeilen wiederherzustellen.

    • Verwenden Sie den Vollbildmodus, falls verfügbar, häufiger.
  • Richten Sie geschweifte Klammern so ein, dass sie in einer subtilen Farbe (und in einer kleineren Schrift?) Hervorgehoben werden, sodass sie weniger sichtbar sind als der Rest des Codes. Einrückung sollte zum Lesen ausreichen, insb. mit dem leeren Raum von {Linien ...

  • Stellen Sie sicher, dass Ihr Editor die passende öffnende Klammer hervorhebt, wenn Sie fertig sind. }Dies kann hilfreich sein, wenn Ihre Augen instinktiv an die falsche Stelle zeigen.

  • Erneut "schwerer zu tippen": Holen Sie sich einen echten Editor und konfigurieren Sie ihn so, dass beim Drücken von automatisch eine neue Zeile geöffnet wird {.


0

Lebe damit.

Dies ist eindeutig kosmetisch und ändert nichts an der Qualität des Codes oder Ihrer Produktivität als Entwickler. Nichts, was es wert wäre, ein neues Argument anzustellen.

Für diese Art von Codierungsstandard würde ich die Konsistenz über die Codebasis hinweg und die Lesbarkeit über einen bestimmten (auch mit guten Gründen versehenen) "religiösen" Ansatz jeden Tag auswählen.

Wenn Sie es als eine demokratische Entscheidung der Mehrheit der Teammitglieder über ein nicht so wichtiges Problem ansehen, können Sie möglicherweise darüber hinwegkommen.



-5

Verwenden Sie einfach den gewünschten Stil. Verwenden Sie dann einen Code-Verschönerer , um den Code im Standardformat zu ändern, oder richten Sie Ihre eigene kleine Anwendung ein, die den Code von Ihrem Stil in den angegebenen Standardstil konvertiert. Verwenden Sie den Kosmetiker, bevor Sie den Code einchecken.
Sie können auch umgekehrt vorgehen, um den eingecheckten Code vom Standardformat in Ihr Format zu ändern, wenn Sie daran arbeiten.


2
-1 Der Punkt der Frage ist, wie ich darüber hinwegkommen kann. , aber Ihr Rat läuft darauf hinaus, nicht darüber hinwegzukommen , sondern es einfach so zu machen, wie Sie es wollen. Das scheint nicht hilfreich zu sein. Es ist auch nicht sehr praktisch - die Verwendung eines hübschen Druckers kann zu Kollateralschäden führen, dh nach dem Konvertieren in das von Ihnen bevorzugte Format und wieder zurück können viele Zeilen nicht genau gleich sein, auch wenn sie genau dasselbe bedeuten. Das bereitet den Leuten, die verschiedene Versionen durchsehen und herausfinden möchten, was sich wirklich geändert hat, große Schwierigkeiten.
Caleb

@Caleb - Möglicherweise sind Ihre Erfahrungen mit prettyprinter anders. Wir verwenden Atristic Style und niemand hat Beschwerden darüber.
Manoj R

9
Jede ernsthafte Softwareentwicklung wird ein Versionsverwaltungssystem verwenden. Das Einführen von Unterschieden, die nicht wichtig sind, führt zu Problemen und dazu, dass die Betrachter der Unterschiede verärgert sind - oder schlimmer noch, Check-in-Konflikte verursachen.
doug65536
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.