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ß)?
quelle
Used by people who come from a Microsoft IDE background
Es ist keine Microsoft-Sache, z. B. verwenden der Linux-Kernel und K & R den gleichen Stil.Antworten:
Wenn Sie darüber hinwegkommen wollen - es gab ein Zitat von Torvalds:
Ü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?
quelle
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.
quelle
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:
quelle
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.
quelle
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
WrittenLikeThis
oder nichtwritten_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.quelle
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.
quelle
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.
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.
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".
quelle
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.
quelle
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!
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.
quelle
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.
quelle
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.
quelle
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,
CamelCaps
vs.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.
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
{
.quelle
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.
quelle
Das ist der Standard:
http://doh-san.blogspot.com/2005/10/five-monkeys.html
Die meisten, die "es ist der Standard" sagen, folgen dem "Fünf-Affen" -Prinzip.
quelle
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.
quelle