Ich arbeite mit viel altem Java- und RPG-Code in einer internen Unternehmensanwendung. Wie zu erwarten ist, ist ein Großteil des Codes in vielen verschiedenen Stilen geschrieben und oft aufgrund schlecht benannter Variablen, inkonsistenter Formatierung und widersprüchlicher Kommentare (wenn überhaupt vorhanden) schwer zu lesen.
Außerdem ist eine gute Menge an Code nicht robust. Oft wird Code von erfahrenen Programmierern schnell in die Produktion gebracht, während Code von neueren Programmierern durch "Code Reviews" zurückgehalten wird, die IMO nicht zufriedenstellend sind. (Sie haben normalerweise die Form "Es funktioniert, muss in Ordnung sein" als eine ernsthafte Kritik des Codes.) Wir haben eine ganze Reihe von Produktionsproblemen, die meiner Meinung nach verringert werden könnten, wenn man mehr über das ursprüngliche Design nachdenkt und testen.
Ich arbeite seit ungefähr 4 Monaten für diese Firma und wurde ein paar Mal zu meinem Codierungsstil gelobt. Mein Manager ist auch ein Fan von sauberer Codierung als es die Norm ist. Ist es meine Aufgabe, auf einen besseren Stil und eine bessere defensive Codierung zu drängen, oder sollte ich einfach so gut wie möglich codieren und hoffen, dass mein Beispiel anderen zeigt, wie sauberer und robusterer Code (sowie aggressives Refactoring) ist? wird zu weniger Debugging und Änderungszeit führen?
quelle
Antworten:
Sie haben Ihr Fachwissen zu diesem Thema nicht erwähnt. Wenn Sie jedoch kein erfahrener Programmierer sind, ist das Beste, was Sie tun können, Ihre eigene Arbeit gut zu machen. Sie haben auch erwähnt, dass Ihr Manager saubere Arbeit mag - das ist großartig. Wenn Sie mit ihm darüber sprechen können (möglicherweise in einem semiprofessionellen Umfeld), sollten Sie ihm Ihre Bedenken bezüglich des Problems mitteilen. HE ist in der Lage, den Workflow zu ändern.
quelle
Was bedeutet sauberer Code für Sie?
Ich bin sicher, Ihre Definition ist großartig, aber die anderen Leute an Ihrem Arbeitsplatz haben wahrscheinlich ihre eigene Definition. Sie sind nicht falsch, nur anders als deine.
Sie sollten Codierungsrichtlinien erstellen, auf die sich jeder an Ihrem Arbeitsplatz einigen kann, und Sie sollten dies zusammen mit Ihren Programmierkollegen tun . Versuchen Sie nicht, dies den Leuten aufzuzwingen, es wird nach hinten losgehen, wenn Sie dies tun.
Stellen Sie also das Team zusammen und arbeiten Sie an einer gemeinsamen Definition von "sauberem Code"! Hierfür gibt es keine strengen Regeln. Sie versuchen, mehrere Köpfe zusammenzubringen, was zu Konflikten führen kann. Daher möchten Sie möglicherweise die Bühne mit einer positiven Bemerkung bereiten, dass Sie alle respektvoll und offen sein sollten (das Schreiben von Code ist persönlich ...).
Das Clean Code- Buch kann nützlich sein. Sie könnten Beispiele aus diesem Buch verwenden, um darüber zu sprechen und zu sehen, ob Sie dort Gemeinsamkeiten finden?
quelle
Es gibt zwei Dinge, die Wunder bewirken können, um eine konsistente und hohe Messlatte für die Codequalität zu gewährleisten.
Führen Sie Codeüberprüfungen durch
Sie sollten sich bemühen, dass jeder Check-in - egal wie trivial - von einer anderen Person im Team überprüft wird. Keine Ausnahmen. Dies scheint zunächst in die Quere zu kommen, insbesondere für erfahrene Entwickler, die glauben, dass sie nichts zu gewinnen haben, wenn weniger erfahrene Leute ihren Code überprüfen. Regelmäßige Codeüberprüfungen haben jedoch für jeden Entwickler im Team einen unermesslichen Einfluss.
Definieren Sie einen Standard und bleiben Sie dabei
Bei Google haben wir einen Codierungsstil-Leitfaden für jede Sprache, die wir verwenden: C ++ , Java , Python usw. Obwohl die Ingenieure dem Stil-Leitfaden nicht zustimmen können, ist er nicht optional. (Und wird in Codeüberprüfungen rigoros durchgesetzt.) Infolgedessen ist die gesamte Codebasis - Hunderttausende von Codezeilen - sehr konsistent.
quelle
Ich denke, wenn Sie eine Leidenschaft für sauberen Code haben, wird dies Ihre Kollegen belasten. Die Mentalität "Es funktioniert, muss in Ordnung sein" kann von Menschen geändert werden, die sich auf enthusiastische Weise für gutes Design und sauberen Code einsetzen.
quelle
Obwohl hier seit einiger Zeit einige nützliche Antworten veröffentlicht wurden, glaube ich, dass noch Platz für eine weitere ist. Mein Vorschlag ist, wie andere gesagt haben, Codeüberprüfungen durchzuführen. Aber es ist noch einmal erwähnenswert, weil der Begriff "Codeüberprüfung" so vage ist ... fast so vage wie "sauberer Code" :-). Ich habe viel Zeit und Mühe darauf verwendet, auf dieses schwer fassbare Ziel hinzuarbeiten. Und vor allem in den letzten Jahren habe ich, angetrieben von Kollegen, die meine Leidenschaft teilten, meine Vorstellungen, die mit Schlüsselideen prominenter Entwickler kombiniert wurden, zu einer Reihe mit dem Titel Zen of Code Reviews zusammengefasst .
Meine Artikel sind einzigartig, so weit ich weiß, dass ich decke beiden Seiten des Ganges: einen Code - Review als täte Autor und einen Code - Review als tat Rezensent . Obwohl verwandt, sind die Fähigkeiten für jeden etwas unterschiedlich. Und in der Lage zu sein, beides gut zu machen , führt zu einer besseren Codequalität. Das Überprüfen von Code ist genauso wichtig wie das Schreiben von Code. Ja wirklich. Es fördert den Wissenstransfer, fördert die Teamkonsistenz und -kommunikation, hilft Ihnen, Ihr Handwerk zu verbessern, und nicht zuletzt reduziert es fehlerhafte Software sehr kostengünstig - von Anfang an.
Die ersten beiden enthalten Tipps und Techniken zur Vorbereitung einer Codeüberprüfung. In einer Nussschale:
Die beiden anderen Artikel bieten praktische Ratschläge, wie Sie ein besserer Rezensent werden können:
quelle
Mit gutem Beispiel vorangehen. Lassen Sie Ihren Code überprüfen.
quelle
Nach meiner Erfahrung werden die meisten "RPG + Java" -Anwendungen von Programmierern geschrieben, die von der RPG-Seite und nicht von der Java-Seite kommen, und die Denkweise der beiden Welten ist sehr unterschiedlich, was meiner Meinung nach einer der Gründe ist, warum Sie ein grundlegendes Design haben Probleme.
Das offizielle IBM Tooling basiert auf Eclipse. Wenn Sie dies verwenden, können Sie die meisten Tipps und Tricks verwenden, die Eclipse zur Verfügung stehen, und Sie müssen Dinge finden, die für wenig Aufwand viel zurückgeben, da Sie diese im Grunde zeigen müssen Leute, dass es sich überhaupt lohnt, es zu tun.
Eines der effizientesten Dinge, die ich dafür gefunden habe, sind die Speicheraktionen des Java-Editors, in denen Sie ihn auffordern können, Ihre Quelle jedes Mal neu zu formatieren, wenn Sie eine Datei speichern. Dies wird in kurzer Zeit zu einem einheitlicheren Codierungslayout führen, das das Lesen erleichtert. Ich habe meine Ergebnisse hier niedergeschrieben.
Wenn Sie zuerst die Vorstellung haben, dass Sie nützliche Vorschläge haben könnten, hören die Leute viel eher zu ...
quelle
"Jeder schreibt schlechten Code". Verdauen Sie es und bestätigen Sie es dann. Dies setzt das gesamte Team in eine Ebene, die die Hierarchie durchbricht und allen vermittelt, dass alle gleich sind. Für einen erfahrenen Programmierer ist es sehr wichtig, dieses Verhalten und diese Einstellung zu demonstrieren. Üben Sie mit diesen Prämissen die Paarprogrammierung, in der Sie diskutieren, debattieren (im Zeitrahmen) und zu einer Entscheidung darüber konvergieren sollten, was richtig ist, nachdem Sie darüber gesprochen haben, warum etwas falsch sein könnte. Während die Paarprogrammierung ist eine Person der anderen überlegen - beide sind bescheidene und offene Programmierer. Welchen besseren Weg gibt es, um gute Codierungspraktiken zu fördern! :) :)
quelle
Eine Möglichkeit, die ich bisher in keiner der Antworten erwähnt habe, ist Bildung. Lassen Sie Ihr Unternehmen Beiträge für diejenigen sponsern, die zur nächstgelegenen JavaZone oder RubyConf oder zu einer für Sie geeigneten und bequemen Konferenz gehen möchten. Finden Sie relevante Kurse und senden Sie ausgewählte Entwickler zur Teilnahme. Wenn Ihr Unternehmen groß genug ist, kann es sogar möglich sein, interne Seminare und Kurse zu Themen wie Best Practices, Meisterklassen für Ihre Sprache usw. zu organisieren. Holen Sie sich einen guten Dozenten zu diesem Thema und bereiten Sie einen Kurs vor, der auf die Situation Ihres Unternehmens zugeschnitten ist.
Mein Unternehmen tut dies ziemlich oft, und obwohl es immer noch diejenigen gibt, die sich hartnäckig weigern, interessiert zu sein, wächst das allgemeine Bewusstsein für solche Probleme - und der allgemeine Zustand unserer Codebasis verbessert sich. Sogar der "Basic C" -Kurs, den wir für mehrere Runden absolviert haben, erwies sich für Entwickler, die C seit 10-15 Jahren schreiben, als aufschlussreich. Nicht weil sie schlechte Programmierer sind, sondern weil man dazu neigt, in Gewohnheiten zu verfallen und zu vergessen, warum, und dass sich auch die Sprache und die kollektive Erfahrung im Umgang damit langsam ändern.
quelle