Wie kann ich eine saubere Codierung an meinem Arbeitsplatz fördern?

7

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?

Michael K.
quelle
Scrum besser irgendwie implementieren. Es wird jedem das Leben leichter machen.
PradeepGB
1
Versuchen Sie, gute Tools zu finden, die Code untersuchen und Beschwerden / Empfehlungen abgeben können - auf diese Weise ist dies nicht persönlich. Das Finden eines kostenlosen Tools würde helfen, das Tool schneller an andere zu verkaufen.
Job
@PradeepGB - Sie können keinen sauberen Code schreiben. Das wichtigste zuerst.
JeffO

Antworten:

12

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.

Tamás Szelei
quelle
4
+1: Wenn Sie in den Schützengräben sind, ist das Schlimmste, was Sie tun können, Zeit damit zu verbringen, sich auf Ihre Kollegen zu stürzen. Sie können das Thema Ihres Chefs ansprechen und es ihm überlassen, die Änderung voranzutreiben. Das ist sein Job.
Satanicpuppy
3
Wenn Sie sauberen und leicht zu wartenden Code schreiben, fällt dieser auf, insbesondere wenn Ihr Chef sich der Vorteile bewusst ist. Wenn Ihr Code schneller läuft oder robuster ist, fallen Sie auch auf. Beides wird Ihren Fall für Sie machen.
Der Blechmann
3

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?

Martin Wickman
quelle
+1 - Ich würde argumentieren, dass es normalerweise besser ist, eine Reihe von Codierungsstandards zusammenzustellen, bevor Sie das Problem angehen, damit Sie mit einer Lösung an den Tisch kommen, mit der Ihre Mitarbeiter beginnen können. Lassen Sie die Teile, mit denen alle einverstanden sind, und fügen Sie hinzu, was möglicherweise fehlt.
Tim Post
3

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.

Chris Smith
quelle
1
Das allgemeine Problem ist, dass Google einen anderen Programmiertyp hat und dafür bezahlt als der typische Fortune 500, insbesondere wenn die IT als Kostenstelle angesehen wird. Die Lösungen von Google funktionieren möglicherweise nicht in einem Pharmaunternehmen.
Christopher Mahan
Warum jedes Commit? Die Überprüfung jedes Commits erscheint unnötig und möglicherweise problematisch - eher ein Kontrollfokus als ein Kulturfokus. Es besteht die Gefahr, dass minderwertige oder nicht vorhandene Überprüfungen und Diskussionen normal werden. Ein gutes Maß an Autonomie ist auch wichtig für das Wohlbefinden und die Bindung sowie für das Gefühl der Eigenverantwortung. Es sollte nicht ausgeschlossen werden, begrenzte Codefragmente zufällig auszuwählen und gut zu überprüfen. Es wird die Leute dazu bringen, über Codequalität nachzudenken und darüber zu sprechen. Es muss nicht überstürzt werden, um alles zu überstehen - und es wird immer noch einen Wissenstransfer bewirken.
Alex Hayward
1

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.

Diederik Hoogenboom
quelle
1

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:

  • Sie als Autor wissen genau, warum jede geänderte Zeile in Ihrer Codeüberprüfung enthalten ist. Viele sind für einen gebildeten Rezensenten offensichtlich, viele jedoch nicht. Vermitteln Sie diese Punkte, indem Sie Ihre Codeüberprüfung mit Anmerkungen versehen, bevor Sie sie an die Prüfer senden.
  • Überlegen Sie sich bereits vorher genau, was Ihre Codeüberprüfung umfasst: Stellen Sie sicher, dass Sie alle relevanten Änderungen für ein Problem enthalten, und versuchen Sie, nicht mehr als ein Problem einzuschließen.
  • Stellen Sie sicher, dass Sie eine Quellcodeverwaltung auschecken (um Ihren Code erneut mit main zu synchronisieren), bevor Sie ihn senden.
  • Überprüfen Sie Ihren eigenen Code, bevor Sie ihn senden - Zeile für Zeile!

Teil 1: Kommentare vor der Überprüfung: Ermöglichen Sie Ihren Kollegen, Ihnen ein besseres Feedback zu Ihrer Codeüberprüfung zu geben

Teil 2: Best Practices: Richtlinien für die Vorbereitung einer Codeüberprüfung

Die beiden anderen Artikel bieten praktische Ratschläge, wie Sie ein besserer Rezensent werden können:

  • Lesen Sie zuerst die Jira / Ausgabe / Ticket / Anforderung (wie auch immer Sie es nennen).
  • Stellen Sie sicher, dass die Komponententests die Anforderungen abdecken.
  • Überprüfen Sie die Komponententests auf Vollständigkeit der Äquivalenzklasse und des Grenzwerts.
  • Stellen Sie sicher, dass jeder Komponententest gerade genug tut und nicht mehrere Dinge testet.
  • Überprüfen Sie den Code auf Einhaltung der SOLID-Prinzipien.
  • Achten Sie darauf, Räder, überkomplizierten Code und nur komplizierten Code neu zu erfinden.
  • Vermeiden Sie Magie (magische Saiten, magische Ints und sogar magische Boolesche Werte).
  • Fangen Sie den Schmetterlingseffekt ein - gibt es Wellen, die übersehen wurden (z. B. Namensinkonsistenzen).

Teil 3: The Reviewer's Tale: Richtlinien für die Durchführung einer Codeüberprüfung

Teil 4: Überprüfen Sie, als ob Sie den Code besitzen

Michael Sorens
quelle
0

Mit gutem Beispiel vorangehen. Lassen Sie Ihren Code überprüfen.

Brian Carlton
quelle
0

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
0

"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! :) :)

karthiks
quelle
0

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.

harald
quelle