Ich habe immer die Idee unterstützt, Codierungsregeln für Entwickler in einem Unternehmen oder einem bestimmten Projekt zu haben. Besonders wenn das Unternehmen größer als 10 ist. Je größer das Unternehmen, desto größer der Bedarf. Ich weiß, dass viele Leute anderer Meinung sein werden, aber ich habe Projekte gesehen, die sie nicht haben, und der Code sieht aus wie eine totale Katastrophe.
Das eigentliche Problem, das sich daraus ergibt, besteht darin, diejenigen hartnäckigen zu machen, die keine Klammern in if-Anweisungen verwenden oder überall im Code dieselbe Verbindungszeichenfolge verwenden, oder was auch immer, um die Codierungsregeln zu verwenden, ohne sie zu widersprechen die Idee?
coding
coding-standards
coding-style
company
TheBoyan
quelle
quelle
Antworten:
Lassen Sie sie ein Problem beheben, anstatt Regeln zu bekämpfen. Ich persönlich bevorzuge die Idee von "Style Guides", "Coding Standards" oder ähnlichem in der Hoffnung, dass sie die Reaktion "Knie = Regeln = schlecht" des Knie-Ruckes verhindert.
Aber selbst wenn dies der Fall ist - ich neige dazu zu glauben, dass die Regeln aus einem bestimmten Grund gelten, und der Weg, hartgesottene Leute dazu zu bringen, sich umzudrehen, besteht darin, ihnen klar zu machen, dass sie durch Befolgen von Richtlinien dazu beitragen, den Code einfacher zu machen Lesen Sie für alle.
Manchmal ist Gruppenzwang die beste Lösung dafür.
quelle
Bei meiner Arbeit verwenden wir alle drei folgenden Lösungen:
1) Verwenden Sie einen Code-Style-Checker wie den exzellenten Checkstyle (für Java) oder StyleCop (für C #). Hierbei handelt es sich um einfach zu konfigurierende Tools, mit denen Codierungsstil- / Regelabweichungen automatisch hervorgehoben werden können. Es gibt jedem eine neutrale dritte Partei, um zu bestimmen, was akzeptabel ist und was nicht.
2) Nehmen Sie eine neu formatierte Code-Vorlage zum Neuformatieren an (hier ein Beispiel mit Eclipse) (und eine andere für Visual Studio), die Ihren Code beim Speichern automatisch formatiert. Dies ist ideal, um es jemandem zu ermöglichen, zu codieren, wie er es wünscht, aber den gesamten Code beim Speichern / Festschreiben auf die gleiche Weise formatiert zu haben. Ich mag diesen wirklich und unser Code war noch nie so konsistent.
3) Codeüberprüfungen. Hoffentlich machen Sie das trotzdem, aber eine Sache, die hervorgehoben werden sollte, ist, wo Codierungsregeln / -stile gegen die Konvention verstoßen.
Darüber hinaus ist es wichtig, dass sich alle auf demselben Boot befinden und die Stile / Regeln vereinbart haben, auf die sie hinarbeiten. Machen Sie deutlich, dass Sie nicht in allen Punkten eine Einigung erzielen, sondern bitten Sie das Team, sich zu verpflichten, den Entscheidungen des Teams treu zu bleiben. Stellen Sie sicher, dass Sie gelegentlich die ausgewählten Stile / Regeln überprüfen, um die reale Erfahrung mit ihnen und die Teamumsätze zu berücksichtigen.
quelle
Sind sie "hartnäckig", wenn sie keine Klammern verwenden, oder ist dies eine "hartnäckige" Anfrage?
Wähle deine Schlachten. Ich bezweifle, dass dies einer derjenigen ist, die es wert sind, ausgewählt zu werden. Ich würde es nicht genießen, irgendwo zu arbeiten, was in der Nähe dieses Detaillierungsgrades beim "Code zum ersten Einchecken" erwartet wird . Dies ist ein roter Indikator dafür, dass das Team das Refactoring nicht versteht.
OO 101 : "Refactor, wenn das Produkt das tut, was es tun muss". Nicht bevor.
quelle
Es ist ziemlich schwierig, in großen Teams auf der Schulter jedes einzelnen Entwicklers zu sitzen und sicherzustellen, dass sie Klammern dort platzieren, wo Sie denken, dass sie hingehen sollten - vertrauen Sie mir in diesem Fall;).
Wenn es etwas ist, von dem Sie wirklich glauben, dass es Ihre Entwicklung behindert, brauchen Sie einen "Gatekeeper". Lassen Sie beispielsweise keine Personen ohne Codeüberprüfung einchecken. Lassen Sie den technischen Architekten oder Teamleiter den Code überprüfen und ablehnen, bis er den Codestil "korrigiert". Sie werden es bald satt haben und sich an die Regeln anpassen, möglicherweise nur so lange, wie sie überprüft werden.
Natürlich nehmen einige Unternehmen Junior-Programmierern die Check-in-Rechte vollständig weg. Wenn sie endlich die Kodierungsregeln der Unternehmen kennen, erhalten sie das Privileg.
quelle
Ich denke, Sie sprechen über Probleme auf sehr unterschiedlichen Ebenen:
Dies ist meistens ein Stil- / Lesbarkeitsproblem, es sei denn, es liegt ein explizites Problem mit der Priorität des Operators vor. Letzteres sollte nicht sehr häufig sein und ist ohnehin einheitlich testbar und daher leicht zu reparieren. Ersteres kann leicht in einen Heiligen Krieg zurückfallen, mit wenig zu gewinnen, aber schwerwiegenden negativen Konsequenzen für die Moral des Teams. Also Vorsicht - schieben Sie nur bewährte Regeln, die von mindestens einigen Teams / Communities akzeptiert wurden und nachweislich funktionieren.
Wenn Sie Magic Constants meinen, ist dies in der Tat ein Wartungsproblem (plus potenziell Sicherheitsproblem), und als solches wird IMHO jeder erfahrene Entwickler verstehen und akzeptieren, dass es eine schlechte Sache ist.
Sie können die Leute nicht zwingen, sich mit den Kodierungsregeln einverstanden zu erklären. Ihre einzige Chance besteht darin , durch Diskussion und (manchmal heftige) Debatten ein gemeinsames Verständnis und Einverständnis der Teammitglieder zu erreichen . Sie müssen logische und überzeugende Argumente verwenden , den Wert hinter jeder Regel aufzeigen und erklären, wie sich das Befolgen dieser Regel für die Unannehmlichkeiten beim Anpassen tief verwurzelter Gewohnheiten auszahlt. Versuchen Sie andererseits, den Übergang so einfach wie möglich zu gestalten , indem Sie beispielsweise beim Einchecken eine automatisierte Code-Formatierung gemäß den akzeptierten Regeln einführen.
Manchmal muss man jedoch einfach akzeptieren, dass Menschen unterschiedliche Meinungen haben , daher sind die Kodierungsregeln, die jeder akzeptieren kann, in gewisser Hinsicht nachsichtig. Akzeptieren Sie das und konzentrieren Sie sich auf Bereiche, in denen Sie Dinge mit weniger Aufwand verbessern können.
quelle
Binden Sie sie in die Festlegung von Regeln ein. Dies hilft normalerweise dabei, die Menschen zu ermutigen, ihnen zu folgen.
quelle
Dafür ist die Codeüberprüfung gedacht. Die Codeprüfer sollten keinen Code passieren lassen, der nicht den Standards entspricht. Stellen Sie sicher, dass Sie die Regeln für dringende Korrekturen nicht lockern. Wenn Sie einige Male unter Druck wiederholen müssen, um dies zu erreichen, werden diejenigen, die nicht bereit sind, ihre Arbeit beim ersten Mal ordnungsgemäß auszuführen, behoben.
quelle
Überall die gleiche Verbindungszeichenfolge? Die Lösung hierfür ist das Refactor, bis Sie alle Duplikate entfernt haben. Copy-Paste-Codierer sollten ins Programmierergefängnis gehen. (Nicht lachen! Steve Ballmer ist der Aufseher.)
Aber das eigentliche Problem hier ist Ihr Verb „make“ . Sie können Programmierer nicht dazu bringen, irgendetwas zu tun, und wenn Sie dies tun, verschwenden Sie ihre wertvollste Eigenschaft: das tiefe intellektuelle Engagement, das durch die Arbeit an etwas entsteht, das Ihnen wichtig ist.
So würde ich es lösen:
Programmieren ist ein Mannschaftssport oder eine kollektive künstlerische Arbeit. Was die Leute vereinbaren, ist bei weitem nicht so wichtig wie das, worüber sie sich einig sind, und sie sind gut darin, bei Bedarf neue Vereinbarungen zu treffen.
quelle