Wir haben ein kleines Entwicklerteam (nur 3 Entwickler) und vor kurzem ein neues Teammitglied. Obwohl er ein intelligenter Kodierer ist, unterscheidet sich sein Kodierungsstil völlig von unserem. Unsere vorhandene Codebasis enthält hauptsächlich lesbaren, sauberen und wartbaren Code, aber das neue Teammitglied ändert schnell viele Dateien, führt hässliche Hacks und Verknüpfungen ein, verwendet überall Definitionen und fügt Funktionen an den falschen Stellen hinzu usw.
Meine Frage ist, ob andere schon so etwas erlebt haben und ob jemand Tipps hat, wie man mit ihm spricht.
coding-style
coding-standards
user3287
quelle
quelle
Antworten:
Ich arbeite mit einem Team, das in weniger als einem Jahr von 2 Entwicklern auf 10 gewachsen ist. Ich war Nummer 3 und der erste, der ein Problem mit den Codierungsstandards ansprach. Die beiden ursprünglichen Entwickler hatten einige Jahre lang Seite an Seite gearbeitet und einen gemeinsamen Standard angenommen, der mir fremd vorkam. Wir hatten genau dieselben Probleme, die Sie beschreiben.
Was wir gemacht haben war:
Forschungscodierungsstandards
Wir haben ein paar Tage damit verbracht, etablierte Open-Source-Projekte auszuprobieren. Wir wussten, dass das Team schnell wachsen würde und wir suchten nach echten Lösungen, die auf echten Projekten basierten und nicht auf allgemeinen Richtlinien. Wir haben uns auch nicht um die optimalen Codierungsstandards gekümmert, sondern um eine Reihe von Regeln und Richtlinien, die sinnvoll sind und nicht das Refactoring unserer gesamten Codebasis erfordern. Wir haben nach einem Hack für Codierungsstandards gesucht, wenn Sie so wollen.
Wir drei entschieden, dass die besten Codierungsstandards für ein etabliertes PHP-Projekt die von Zend Framework befolgten sind. Glücklicherweise stellen die Zend Framework-Mitarbeiter ein sehr umfassendes Dokument mit Codierungsstandards zur Verfügung .
Erstellen eigener Codierungsstandards
Natürlich hat es keinen Sinn ergeben, die Codierungsstandards eines anderen Projekts auf unser Projekt anzuwenden. Wir verwenden das Zend Framework Dokument als Vorlage:
Wir hatten also ein ziemlich großes Dokument zur Hand, das in unserem schicken Wiki gespeichert war. Es war eine nette Lektüre, der wir uns alle einig waren. Und für sich genommen völlig nutzlos.
Bleiben Sie unserem Versprechen treu
Unsere Codebasis war zu dieser Zeit ungefähr 1 * 10 ^ 6 sloc. Wir wussten, dass wir, seit wir formale Codierungsstandards verabschiedet hatten, damit beginnen mussten, unseren Code umzugestalten, aber zu der Zeit waren wir mit anderen Problemen konfrontiert. Deshalb haben wir uns entschlossen, nur unsere Kernbibliotheken umzugestalten, nur 5 * 10 ^ 3 sloc.
Wir haben einen von uns zum Kodierungsstandard-Master ernannt (wir haben anstelle des Masters lokale Profanität verwendet ), der für die Überprüfung und Durchsetzung der Standards verantwortlich ist. Wir recyceln die Rolle alle paar Sprints. Ich war der Erste und es war eine Menge Arbeit, da ich fast jedes Commit überwachen musste.
Während meiner Amtszeit hatten wir einige neue Diskussionen und kleine Ergänzungen zum Originaldokument, und schließlich hatten wir ein etwas stabiles Dokument. Wir ändern es von Zeit zu Zeit, aber die meisten dieser Änderungen betreffen neue Funktionen der Sprache, da PHP 5.3 bis auf den Namen eine Hauptversion war.
Umgang mit dem Neuen
Als der nächste Neuzugang kam, war es an der Zeit, unsere Codierungsstandards auf den Prüfstand zu stellen. Nach einer kleinen Einführung in unsere Codebasis haben wir ihn gebeten, unser Codierungsstandards-Dokument zu bewerten. Er hätte fast geweint. Es schien, dass er alles anders machte.
Da ich zu dieser Zeit der Meister der Kodierungsstandards war, war es an mir, seine Eingaben zu bewerten und das Dokument entsprechend zu überarbeiten. Seine Vorschläge waren:
Für die nächsten Wochen wurde ihm eine einfache Aufgabe übertragen: Einige Teile unserer Codebasis mit den Standards auf den neuesten Stand zu bringen. Ich musste diese Teile sorgfältig anhand einiger Regeln auswählen:
Ich habe seinen Prozess überwacht und er hat gute Arbeit geleistet. Wir haben verschiedene Codeteile identifiziert, die nicht in unser Dokument passen, und entsprechend überarbeitet (Code und / oder Standards, je nachdem, was sinnvoller ist).
Und dann kam ein anderer neuer Typ. Wir haben den Vorgang wiederholt (diesmal ein anderer Meister) und es hat wieder funktioniert. Und wieder.
Abschließend
Zu einem bestimmten Zeitpunkt wurde vorgeschlagen, einen Pre-Commit-Hook zu verwenden, um die Überprüfung der Standards zu automatisieren. Wir haben uns aus verschiedenen Gründen dagegen entschieden. Es gibt einige interessante Diskussionen zu StackOverflow zu diesem Thema:
Einige sind PHP-spezifisch, aber die Antworten gelten für alle Plattformen.
quelle
Ja, das habe ich schon einmal erlebt. Wenn Sie in einem Team arbeiten, müssen sich die Teammitglieder auf bestimmte Regeln und Konventionen einigen. Dazu gehört auch der Stil.
Sie sollten Ihr Team zusammensetzen und eine Reihe von Regeln und Kodierungsstandards entwerfen lassen, für deren Einhaltung Sie jeden Teil des eingecheckten Codes benötigen würden.
Höchstwahrscheinlich ist der vorhandene Code die Grundlage für Ihr Regelwerk, zumindest für das Styling. Sobald dies erledigt ist, muss jeder die Anforderungen erfüllen und es sollte im Rahmen der Codeüberprüfung überprüft werden . Code, der nicht den Standards entspricht, sollte nicht eingecheckt werden dürfen.
Übrigens muss es keine demokratische Abstimmung sein, es ist eines der Dinge, bei denen der Teamleiter tatsächlich eine Autorität ausüben kann. Ich denke jedoch nicht, dass Sie Standards auferlegen können, die die Mehrheit des Teams ablehnt. Sie können Standards auferlegen, die eine einzelne Person, insbesondere eine neue, ablehnt.
Wie man mit ihm spricht ... Jeder erfahrene Programmierer weiß, dass jeder Ort und jedes Team seine eigenen Konventionen und Stile haben, die befolgt werden sollten. Sie können ihm sagen, dass er gerne Verbesserungen vorschlägt, sich aber an die Regeln des Teams halten muss. Er sollte den Stil des vorhandenen Codes nicht ändern, sondern denselben Stil verwenden, wenn er neuen Code hinzufügt.
Sie können dieser Person auch mitteilen (wenn Sie der Manager sind oder mit Ihrem Manager darüber sprechen), bestimmte Dinge nicht zu tun, die Sie für unangemessen halten (Sie haben Definitionen, Reihenfolge, Hacks und Verknüpfungen usw. erwähnt).
quelle
Notieren Sie sich in Ihrem Einstellungsprozess, dass das Befolgen der akzeptierten Codierungsstile eine Voraussetzung für die Beschäftigung ist. Was machen Sie nun mit denen, die sich nicht an die Regeln halten? Entfernen Sie zunächst den Zugriff auf Live-Code, bis Sie mit dem Programm fertig sind.
.
quelle
Folgendes kann getan werden:
Folgendes sollten Sie vermeiden:
quelle
Unsere vorhandene Codebasis enthält meist lesbaren, sauberen und wartbaren Code
Eine Sache, die ich im Laufe der Jahre gelernt habe, ist, dass die Lesbarkeit im Auge des Betrachters liegt. Ich habe viele Fälle gesehen, in denen jemandes Chickenscratch-Codierungsstil als "lesbar" gerechtfertigt ist, und ich habe völlig vernünftige Leute gesehen, die darüber streiten, welche Codierungsstile am "lesbarsten" sind. Vielleicht sieht dieser Typ Ihren Stil nicht als lesbar an?
Das heißt, der neue Mann sollte Ihren Standards entsprechen, nicht umgekehrt.
quelle
Ziehen Sie in Betracht, Pull-Anforderungen für neuen Code im Repository zu verwenden. Dies bietet einen praktischen Ort für die Codeüberprüfung. Code, bei dem die Codeüberprüfung fehlschlägt, wird erst dann in das Repository aufgenommen, wenn die Form stimmt.
Achten Sie nur darauf, die Pull-Anforderungen nicht zu groß zu machen. Meiner Erfahrung nach sollten sie nicht länger als einen halben Tag bis maximal zwei Tage sein, da sonst zu viele Zusammenführungskonflikte auftreten.
Online-VCS-Systeme wie Bitbucket oder Github unterstützen diese Funktionalität. Wenn Sie einen On-Premise-Ansatz bevorzugen, ist Stash derzeit die beste Wahl.
quelle
Es gibt eine einfache Regel, die Sie befolgen können: Wenn Sie eine Datei mit Code ändern, verwenden Sie den in dieser Datei verwendeten Codierungsstandard. Wenn Sie eine neue Datei erstellen, verwenden Sie einen guten Codierungsstandard. (Plus: Wenn Ihr Compiler Warnungen geben kann, aktivieren Sie alle sinnvollen Warnungen, aktivieren Warnungen = Fehler, wenn möglich, und lassen keinen Code mit Warnungen zu. Plus: Wenn Sie Tools verwenden, die Änderungen in einer Datei vornehmen, z. B. das Ändern Tabs auf Leerzeichen oder ähnliches setzen, NICHT benutzen).
Der Grund, warum es große Argumente für Kodierungsstandards gibt, ist, dass ein Standard nicht besser oder schlechter als der andere ist (normalerweise), sondern nur anders. Das einzig wirklich schlimm ist das Mischen von Codierungsstilen.
Natürlich erwarte ich, dass jeder anständige Programmierer Code schreiben kann, der jedem Codierungsstandard folgt, egal ob er diesen bestimmten Standard bevorzugt oder nicht.
Und andererseits gibt es Qualitätsstandards. Akzeptieren Sie niemals Code, der nicht Ihren Qualitätsstandards entspricht.
quelle