Reiner Code: Ursachen und Wirkungen



Autor: Victor Svirsky, Senior Python-Entwickler / Teamleiter, DataArt

Wie viele Programmierer, so viele Definitionen, was ist sauberer Code ? Beim Interviewen höre ich oft, dass guter Code leicht zu lesen ist. Ich stimme zu, aber wie meine persönlichen Erfahrungen zeigen, ist dies nur die Spitze des Eisbergs.

Die erste Glocke, die uns sagt, dass der Code nicht mehr sauber ist, ist eine Verlängerung der Entwicklungszeit für neue Funktionen und eine Zunahme der Regressionsbereiche bei der geringsten Änderung des Systems. Dies liegt an der Tatsache, dass sich technische Schulden ansammeln, die Komponenten im System sehr eng miteinander verbunden sind und es keine Autotests gibt. Die Gründe hierfür können sein:

  • Extern - wie der Druck des Unternehmens und der Wunsch, neue Funktionen schneller zu erhalten.
  • Intern - schlecht entwickelte Entwicklungsprozesse und Interaktion innerhalb des Teams, mangelnde Kontrolle und Entwicklungsstandards oder banaler Mangel an Kompetenz.

Verschieben Sie die Arbeit an der Qualität von Code und Architektur nicht in einer langen Box. Während des Sprints ist es wichtig, Aufgaben, die für das Unternehmen von direktem Wert sind (Aufgaben mit neuen Funktionen), von technischen Aufgaben zu trennen, die sich nur indirekt auf das Unternehmen auswirken. Der Anteil der Trennung hängt vom aktuellen Stand des Projekts, dem Zeitrahmen und der Anzahl der freien Hände ab.

Was ist sauberer Code?


Es stellt sich heraus, dass der Code sauber und das System korrekt ausgelegt ist. Ein einfaches Lesen des Codes reicht nicht aus. Er muss andere Eigenschaften besitzen:

  • . . , . , , .
  • , , . , . . , . , .
  • . . . -, OWASP.
  • — , . , , . , , . , .
  • . , . , .

Um eine subjektive Beurteilung der Qualität seines Codes zu vermeiden, wurde 1961 der Begriff „Code-Gerüche“ oder „Aktiencode“ eingeführt. Dies ist eine Gruppe von Regeln und Empfehlungen, die klar definieren, ob es Zeit für ein Refactoring ist. Der "Geruch" führt zum Zerfall von Code, und Entwickler sollten immer danach streben, ihn zu beseitigen. Die Notwendigkeit des Refactorings ergibt sich direkt aus dem Geruch des Codes, und indem wir die Ursache verhindern, können wir die Konsequenzen vermeiden. Weitere Informationen zu den wichtigsten Anzeichen für ein Refactoring finden Sie in Martin Fowlers Buch „Refactoring. Vorhandenen Code verbessern. "

Soll ich sauberen Code schreiben?


Auf jeden Fall wert! Aber nicht immer und nicht überall lohnt es sich, der Sauberkeit zu viel Aufmerksamkeit zu schenken.

Vergessen Sie nicht die Nützlichkeit und Lebensdauer Ihres Codes. Wenn Sie beispielsweise vor der Aufgabe stehen, ein Konzept zu entwickeln - PoC (Proof of Concept) - und nachweisen, dass der ausgewählte Technologie-Stack die Aufgabe ausführt, wird Ihr Code in ein oder zwei Wochen irrelevant. Es lohnt sich nicht, diese Funktionalität zu verbessern.

Es besteht die Ansicht, dass es nicht erforderlich ist, die Qualität des Codes oder von Teilen des Systems zu überwachen, die bald ersetzt werden. Und das gilt aus mehreren Gründen nicht. Hochwertige Verarbeitung erleichtert, nahtloser und schneller den Übergang oder die Integration in neue Teile. Dies wird sicherlich das Leben in Fällen vereinfachen, in denen mehrere Versionen des Codes gleichzeitig unterstützt werden müssen. Die Anzahl der Regressionsfehler mit sauberem Code ist um ein Vielfaches geringer. Vergessen Sie auch nicht, dass es nichts Bleibenderes als nur vorübergehend gibt. Vielleicht liegt die Aufgabe, diesen Teil des Codes für mehrere Monate zu verbessern, im Rückstand.

Was hilft, Ihren Code zu verbessern?


Die meisten Programmierer träumen davon, schnell und schön Code zu schreiben, damit beim ersten Mal alles perfekt funktioniert. Aber nicht jedem gelingt es, den Code nicht nur funktionsfähig, sondern auch verständlich zu machen. Wie gelingt es, sauberen Code zu schreiben? Es gibt zwei Möglichkeiten - Selbstorganisation und Teamwork.



Selbstorganisation


Betrachten Sie verschiedene Möglichkeiten, um die Qualität des einzelnen Codes zu verbessern. Diese Empfehlungen eignen sich für Entwickler auf allen Ebenen.


  1. , — . — . IDE ( ) , , . IDE , . — .

    . , .
  2. open source
    . , . , . !

  3. , . . . , , 10, , . .

    . -, .

  4. . . . .

    . .


  5. . . - . , .

    — , , , , .


  6. , . — .
  7. !

    , .


Die meisten Aufgaben werden im Team gelöst. Es ist sehr wichtig, die Verantwortung für die Qualität zwischen den Teilnehmern zu teilen. Je größer das Team, desto schwieriger ist es, das Produkt in gutem Zustand zu halten. Betrachten wir verschiedene Ansätze zur Code-Aufbewahrung unter den oben genannten Bedingungen.

  1. Codeüberprüfung
    Dies ist ein einfaches Prinzip zum Verständnis und zur Ausführung. Mindestens zwei Personen, einschließlich des Autors des Codes, überprüfen den Code.

    Bei der Überprüfung Ihres Codes sind verschiedene Dinge zu beachten:

    • Eine davon besteht darin, zu überprüfen, ob der Code gegen die Regeln der Codevereinbarung verstößt. Dies ist ein Prozess, der mithilfe statischer Analysegeräte in CI (Continuous Integration) automatisiert werden kann und sollte.
    • Andere sind Code-Wartbarkeit und Fehlerbehandlung, die nicht automatisch überprüft werden können.
    • , , . , ?

  2. (Continuous integration)

    , .

    , :

    • . . , . , , .
    • , , .
  3. (Coding onventions)

    . , . , , .

    , , , . . , , . , . , . .

    , , . — , - .

    . , . .


  4. , . , , .

    , . , . , , .

    -. . , . . , .


  5. , , . . , .

    , :

    • ? , . , .
    • ?
    • ()?
    • ?
    • — ?

    , , . , .


  6. , . SonarQube. :



    • — . , . , .


    • , — DRY (Don’t repeat yourself).


    • . . . , .


    • , , , .


    • . , . , .

***


Fehler im Code ähneln einem CO2-Fußabdruck. Es ist völlig unmöglich zu entkommen, und überschüssige Abgase allein werden weder die Menschheit noch ihre umgebende Natur töten. Dennoch scheint es ein natürliches Bedürfnis zu sein, die negativen Auswirkungen des heutigen Aufenthalts auf dem Planeten zu verringern. In etwa der gleichen Weise liegt es in der Verantwortung jedes Entwicklers, sauberen Code zu schreiben. Egal für welchen Pfad Sie sich entscheiden, Sie müssen sich bemühen, funktionierenden und verständlichen Code zu schreiben.

Nun, wenn Sie Reinheit nicht in einen Fetisch verwandeln können, angesichts der Lebensdauer unseres Codes und der Bewertung der Machbarkeit weiterer Verbesserungen. Das Wichtigste, woran man sich bei Menschen erinnern sollte: Benutzer, die selbst einen kleinen Teil des von uns entwickelten Systems ausfallen lassen können, und Ingenieure, die dieses System unterstützen müssen.

All Articles