Was machen Sie, wenn Sie mit jemandem zusammenarbeiten, der dazu neigt, stilistisch schlechten Code zu schreiben? Der Code, von dem ich spreche, ist normalerweise technisch korrekt, vernünftig strukturiert und mag sogar algorithmisch elegant sein, sieht aber nur hässlich aus . Wir haben:
- Mischung verschiedener Namenskonventionen und Titel (
underscore_style
undcamelCase
undUpperCamel
undCAPS
alle mehr oder weniger zufällig auf verschiedene Variablen , die in der gleichen Funktion angewandt) - Bizarre und inkonsistente Abstände, z
Functioncall (arg1 ,arg2,arg3 );
- Viele falsch geschriebene Wörter in Kommentaren und Variablennamen
Wir haben ein gutes Codeüberprüfungssystem, in dem ich arbeite, sodass wir das Schlimmste untersuchen und beheben können. Es fühlt sich jedoch sehr kleinlich an, eine Codeüberprüfung zu senden, die aus 50 Zeilen besteht: "Fügen Sie hier ein Leerzeichen hinzu. Schreiben Sie" itarator "richtig. Ändern Sie die Groß- und Kleinschreibung. Usw."
Wie würden Sie diese Person ermutigen, mit solchen Details vorsichtiger und konsistenter umzugehen?
coding-style
code-quality
teamwork
code-reviews
JSB ձոգչ
quelle
quelle
Antworten:
Vereinbaren Sie eine Kodierungskonvention
Auch wenn dies ein One-Pager ist. Ich schlage vor, dass sich das gesamte Team hinsetzt und sich alle auf grundlegende Kodierungskonventionen einigen, die das gesamte Team anwenden kann.
quelle
Ich denke, du musst einfach weitermachen, was du tust. Verfügen Sie über klare Codierungsrichtlinien und setzen Sie diese bei der Codeüberprüfung durch. Wenn ein Entwickler jedes Mal, wenn er versucht, etwas einzuchecken, 50 oder 100 Zeilen "Add a space here" und "Spell 'iterator' correct" erhält, darf er nicht einchecken, bevor alle Probleme behoben sind Ich muss anfangen, saubereren Code zu schreiben, nur um den Ärger zu vermeiden.
Ich denke, wenn Sie diese Dinge selbst reparieren, wie NimChimpsky vorgeschlagen hat, werden Sie für immer hinter dieser Person aufräumen.
quelle
Ich rufe BS bei allen an, die sagten, dass Rechtschreib- und Formatierungsfehler bei Variablennamen keine Rolle spielen. Offensichtlich haben sie nur ihren eigenen Code gelesen. Und beachte das Wort genau dort - lies. Stellen Sie sich vor, Sie lesen ein Buch mit vielen Rechtschreibfehlern, unsauberer Formatierung, inkonsistenten Zeilenabständen und verschiedenen anderen Faulheiten, die in vielen Quellcodes vorkommen. Es wäre langweilig.
Für einen Beruf, bei dem Ihre Syntax zu 100% korrekt sein muss, gibt es für echte Entwickler einfach keine Entschuldigung, keinen sauberen, konsistenten Codestil zu haben. Alles andere ist Schlamperei und Faulheit. Ich frage mich immer nach der Korrektheit des schlampig formatierten Codes bei der Implementierung.
quelle
Ich würde es selbst ändern und dann einen höflichen Kommentar in den Code einfügen.
Dies setzt voraus, dass es bereits einen Styleguide gibt, wie in der Frage angegeben:
Mein Vorschlag ist also ein letzter Ausweg. Ich denke, es ist genauso schnell, ihn selbst zu ändern und einen Kommentar zu hinterlassen, wie eine E-Mail zu senden oder was auch immer.
quelle
Ich denke, Konventionen wie die Benennung von Klassen und Variablen sind wichtig und sollten eingehalten werden, ebenso eleganter und effizienter Code, aber auf die Gefahr hin, dass meine Antwort oft herabgestuft wird, muss ich sagen, dass im Allgemeinen das Paradigma des "hübschen Codes" das ist ist viel rumgeschubst ist meiner meinung nach sehr überbewertet.
Zunächst einmal muss der Entwickler, der es geschrieben hat, es in erster Linie warten, und wenn er jemals von einem Bus und einem anderen Programmierer getroffen wird, kann er nicht herausfinden, wie es funktioniert, weil der Code nicht "hübsch" ist, würde ich das sagen Der andere Entwickler ist sowieso nicht sehr gut. Und es gibt eine Menge automatisierter Formatierer / Verschönerer, damit jeder den Code bei Bedarf verschönern kann, ohne Zeit zu verschwenden, während er "im Fluss" / "in der Zone" ist.
Bitte beachten Sie, dass ich hier keine Spaghetti / Cowboy-Codierung befürworte. Tatsächlich habe ich einige sehr gut formatierte Spaghetti-Codes gesehen (Funktionskörper, die sich über 4 bis 5 Bildschirme erstrecken, globale Variablen, die über verschiedene Quellcodedateien verstreut sind, im Allgemeinen falsche Namen , etc).
quelle
Einer meiner Kollegen schreibt HTML so, dass meine Haut krabbelt. Stellen Sie sich meinen HTML-Code schön und strukturiert mit zwei Leerzeichen vor, die durch Tags am Ende von mir in Stücke gehackt werden, die in derselben Zeile oder in der nächsten enden, wie ein Betrunkener, der seinen Arm um Sie werfen muss, um stehen zu bleiben. Neue Zeilen werden selten eingerückt, aber wenn ja, gibt es in einem Teil der Galaxie sicher ein höchst chaotisches Schwarzes Loch, das irrationale Temperaturwerte so ausgibt, dass die Ziffern irgendwie die Anzahl der Leerzeichen oder Tabulatoren widerspiegeln, die in solchen Einrückungen verwendet werden von dieser Frau. Wenn ich Glück habe, wird ein Eingabemarker angezeigt, der mit "
</input>
" geschlossen ist . Absoluter Albtraum, den du verstehen kannst.Auch das scheint niemand zu verstehen, denn für die meisten höheren Klassen hier ist der organisierte oder unorganisierte Code wie der Unterschied, den wir machen, wenn wir Schweizer Käse oder amerikanischen Käse auf unsere Sandwiches geben, das heißt, sie könnten sich wirklich weniger darum kümmern. Ich ließ es los, weil ich mit einem anderen Projekt gestresst war, und ich glaube, sie begann zu begreifen, wie schwierig es war, Code wie diesen zu verstehen, bevor sie es verbessern wollte. Mein Rat wäre zu demonstrieren, warum es besser ist, Ihren Code mehr zu formatieren, als ihn einfach dazu aufzufordern.
quelle
Sei froh, dass du das alles hast. Die meisten Programmierer geben Ihnen vielleicht als Erstes etwas auf diese Liste. Ich denke, dass die Benennung und der Abstand von Variablen am wenigsten wichtig sind, um die man sich Sorgen machen muss.
quelle
Klingt so, als müssten Sie eine Stilkonvention einrichten und ihr zustimmen. Wenn Sie dies nicht tun, verfügen Sie über Bibliotheken mit 3 Leerzeicheneinzügen, andere mit 4, einige mit Camel Case und andere mit underscore_case.
quelle
Sind die Änderungen, die Sie vornehmen möchten, Ihre persönlichen Vorlieben oder haben Sie einen tatsächlichen Standard, dem Sie folgen müssen? Wenn Sie keinen aktuellen Standard haben, tun Sie dies nicht. Setzen Sie zuerst einen Standard. Dann können Sie Software erhalten, die eingestellt werden kann, um den Code auf die Standardeinstellungen umzugestalten (zumindest in einigen Fällen).
Wenn Sie einen Standard haben, beginnen Sie ihn in der Codeüberprüfung durchzusetzen. Es hat keinen Sinn, einen Standard zu haben, wenn Sie ihn bei der Codeüberprüfung nicht durchsetzen. Dies bedeutet eine Menge zusätzlichen Wartungsaufwand, da die Benutzer alten Code reparieren müssen, der dem Standard ursprünglich nicht entsprach, wenn sie ihn berühren.
Bestehen Sie auch ohne einen Standard darauf, Rechtschreibfehler in Variablennamen zu beheben (ich würde mich nicht besonders um Kommentare kümmern), da alle, die den Code berühren, für immer verrückt werden.
quelle
Codierungsstandards müssen identifiziert werden, damit jeder weiß, was sie sind, und dann müssen sie durchgesetzt werden. Es sollte Konsequenzen haben, wenn die Regeln nicht befolgt werden.
Hier sind die Dinge, die einen Anreiz bieten sollten:
Wenn diese Person sich darüber keine Sorgen machen muss, weil niemand Ihre Regeln durchsetzt, oder es ihnen egal ist, ob sie unproduktiv sind (und niemand etwas dagegen unternimmt), können Sie nicht viel dagegen tun.
quelle
Ich wäre versucht, einen privaten Chat vorzuschlagen und zu prüfen, ob Sie beide eine Ursache finden können:
Ist der Mitarbeiter in Eile und weil jemand gestern den Code wollte, versucht die Person, etwas so schnell wie möglich zum Laufen zu bringen? Dies kann eine Gelegenheit sein, diese Person zu informieren, sich bei ihrer Arbeit mehr auf Qualität als auf Schnelligkeit zu konzentrieren. Ein Mantra wie "Nehmen Sie sich Zeit" könnte nützlich sein, wenn dies nicht kontraproduktiv ist.
Wie sieht die Person ihre Arbeit? Wenn es ein Gefühl des Stolzes gibt, dann können Sie einen Winkel nutzen, um einen zu verbessern. Wenn es nur ein Job ist, der die Rechnungen bezahlt, kann es viel schwieriger sein, Änderungen zu bekommen. Wissen sie, dass sie keine großartige Arbeit leisten, aber so nah dran sind?
Ist diese Person mit den Konventionen nicht einverstanden und versucht sie aus Protest zu kodieren? Wenn ja, dann haben Sie vielleicht ein großes Problem, aber es lohnt sich herauszufinden, ob dies der Fall ist oder ob die Person nur faul ist? Welche Art von Motivation kann hier nützlich sein, z. B. könnten Sie Gier, Stolz oder ein anderes Laster ansprechen, um die Person dazu zu bringen, sich zu verbessern. Dies ist hinterhältig, aber möglicherweise effektiv, wenn der Versuch der Route der netten Kerle nirgendwo hinführt.
Wie man Freunde gewinnt und Einfluss nimmt Die Leute haben einige Vorschläge, um zu überzeugen, dass es funktioniert, wie zum Beispiel Verbesserungen zu loben und der Person einen guten Ruf zu geben.
Hier einige Gründe, warum dies privat erfolgen muss:
Es gibt eine gute Chance für Demütigungen, Kritik oder andere Unannehmlichkeiten, die besser hinter einer Tür verborgen bleiben, als offen gelassen zu werden, wo jemand das Gefühl hat, dass sein Charakter ermordet wird.
Sie möchten diese andere Person ermutigen, sich ein wenig zu öffnen. Eine Herausforderung dabei ist, dass einige Leute so bewacht sind, dass es lange dauern kann, bis sie ihre Mauern niederreißen.
Wenn möglich, würde ich vorschlagen, dies ein wenig außerhalb des Büros zu versuchen. Zum Mittagessen ausgehen, spazieren gehen oder etwas unternehmen, damit sich die Umgebung so verändert, dass sich die Person ein bisschen wohler fühlt. Dies kann eine Herausforderung sein und erfordert das Kennen der Person, aber die Idee hier ist, dass einige Leute im Büro eine Arbeitsmaske tragen, die hier wahrscheinlich nicht hilfreich ist.
Seien Sie darauf vorbereitet, dass das Gespräch hitzig oder hässlich wird. Dies kann jedoch ein gutes Zeichen sein, wenn Sie die andere Person ansprechen und einen guten Dialog führen können. Einige Leute mögen es, Dinge offen zu halten und andere bevorzugen subtilere Wege, um Dinge zu erledigen. Der Schlüssel besteht darin, sicherzustellen, dass Sie der anderen Person so gut zuhören, dass Sie sich einfühlen und versuchen, deren Seite zu verstehen.
quelle
Wir haben einen JUnit-Test, der nach Formatierungsproblemen sucht. Es wird als Teil des Builds ausgeführt. Ich bekomme immer etwas durch Weglassen eines Leerzeichens zwischen if, while oder for und der öffnenden Klammer. Unser Code ist jedoch konsistent formatiert.
http://code.google.com/p/kawala/wiki/BadCodeSnippetsRunner
quelle
Eine Code-Verschönerung wie " unscrutify " kann einige Ihrer Probleme lösen. Wenn Sie bereit sind, dafür zu bezahlen, gibt es Software auf hohem Niveau, die die Regeln wie Parasoft in den Quellcode selbst einbettet . Parasoft schreibt vor, dass der Code im einheitlichen Stil geschrieben werden muss. Sie können auch Ihre eigenen Regeln einbetten. Wenn solche Tools verwendet werden, müssen die Entwickler einen einheitlichen Stil verwenden. Und nach einer Weile werden sie sich daran gewöhnen.
quelle
Wenn Sie Eclipse verwenden, aktivieren Sie die Option "Aktionen speichern" für die Java-Editoren und weisen Sie alle an, sie zu verwenden. Dies behebt Formatierungsprobleme bei jedem Speichern, behebt jedoch keine Großschreibung. Es könnte jedoch sehr hilfreich sein!
quelle
Wie schwer ist es, Stilkonventionen zu befolgen? Ich verstehe die Rechtschreibfehler, aber der Rest ist ein Indikator für schlampiges Denken und Kodieren. Sagen Sie der Person, dass sie konsistenter sein muss, wenn es um Produktionscode geht, da sie nicht die einzigen sind, die sich damit befassen. Es ist einfach unhöflich, egoistisch und rücksichtslos, Produktionscode in einem inkonsistenten Stil zu schreiben.
quelle
LOL. Sie würden meinen Code absolut hassen. Ich kann nicht buchstabieren, um mein Leben zu retten, und es ist mir egal.
Aber ich weiß, dass einige Leute sich wirklich für diese Dinge interessieren.
Ich schlage vor, dass Sie die Person, die diesen hässlichen Code schreibt, feuern, wenn sie sich nicht ändert, jemanden finden, der die Dinge wirklich hübsch macht, und hoffen, dass sie den Code schreiben kann
und wenn sie es nicht können, dann kannst du dem Kunden wenigstens den kaputten hübschen Code zeigen und ihn verkaufen!
Aber ernsthaft. Konzentrieren Sie sich zuerst auf die wirklich wichtigen Dinge. Wenn Sie keinen guten, stichhaltigen Grund außerhalb von "es tut weh, meine zarten Empfindungen" finden, dann ignorieren Sie es fürs Erste. Wenn es wirklich wichtig ist, setzen Sie sich mit der Person zusammen und überzeugen Sie sie von dieser Wichtigkeit. Dinge wie Standards, die es einfach machen, den Unterschied zwischen Klassenebene, Methodenebene, gemeinsam genutzten, konstanten Variablen zu erkennen, machen einen Unterschied. Wenn sich der betreffende Programmierer überhaupt um seinen Beruf kümmert, wird er verstehen und versuchen, das Richtige zu tun.
quelle
Meine Lösung beim Umgang mit ausgelagerten Ressourcen, bei denen es nicht um die Formatierung (oder leicht zu vermeidende Fehler) ging, bestand darin, dass der Build-Server dies erzwang. Ich habe einen CI-Server-Job erstellt, der jede Nacht ausgeführt wurde und den Code auscheckte, Jalopy und Findbugs ausführte und dann den Code wieder eincheckte. Als das andere Team erfuhr, dass die Verwendung der Standard-Code-Konventionen ihre Arbeit erschweren würde, begann es, ihren Code zu verwenden IDE, um ein Standardformat beizubehalten.
quelle