So schreiben Sie einfach zu beschreibenden Code

Hallo habr


Wie oft hatten Sie oder Ihre Kollegen nicht die Möglichkeit, Ihren eigenen Code mit ein paar Sätzen zu beschreiben?


Ich mache Sie auf eine Übersetzung des Artikels "Wie man leicht beschreibbaren Code schreibt" von Cedd Burge aufmerksam , in dem er seine Ratschläge zur Vermeidung solcher Situationen teilt.


Bild


Wenn Code schwer mit Worten zu beschreiben ist, müssen die meisten Menschen dazu Fantasie einsetzen. Aus diesem Grund wird mentale Energie verschwendet und das Risiko von Fehlern bei der Interpretation von Code erhöht. Verschiedene Personen werden die Wörter immer noch auf ihre eigene Weise wahrnehmen, was zu Verwirrung bei der Diskussion des Codes führen wird.


In der Regel werden solche Diskussionen zu einem fruchtbaren Boden für Fehler, die aufgrund von Missverständnissen entstehen, und die Korrektur dieser Fehler führt häufig aus den gleichen Gründen zu neuen Fehlern. Am Ende bekommen wir einen unverständlichen Code, mit dem niemand arbeiten möchte.


Unbeschreibliches Codebeispiel


Sie könnten denken, dass Code nur eine geschriebene Sprache ist. Wenn der Code einfach aussieht, kann er leicht gelesen, beschrieben und verstanden werden. Dies ist jedoch nicht immer der Fall.


Die nachstehende allgemeine Entscheidung bestimmt, ob ein Jahr ein Schaltjahr ist.


(divisibleBy(4) and not divisibleBy(100)) or divisibleBy(400) 

Dies ist einfacher Code. Es ruft Funktionen dreimal auf, hat 3 Operatoren (und oder oder nein) und zwei Verschachtelungsebenen.


Aber ich denke, wenn Sie eine Sekunde Zeit haben, um diesen Algorithmus mit Worten zu beschreiben, werden Sie Schwierigkeiten haben.


Vielleicht "ist ein Jahr ein Schaltjahr, wenn es durch 4 teilbar und nicht durch 100 oder durch 400 teilbar ist"?


Das Problem ist, dass es in Worten im Gegensatz zu Code keine Klammern gibt. Daher ist es schwierig, den Zustand in Worten angemessen zu beschreiben, und ob sich das Wort "entweder durch 400 teilbar" auf "durch 4 teilbar" oder "nicht durch 400 teilbar" bezieht. Um dieses Problem zu umgehen, können Sie Klammern mit der Hand angeben oder längere Pausen zwischen den Bedingungen einlegen. Die Wahrscheinlichkeit eines Fehlers bleibt jedoch weiterhin groß.


Refactoring des beschriebenen Codes


Wir können die Bedingungen zuerst in Worten beschreiben und erst dann reduzieren, um sie so klar und präzise wie möglich zu gestalten. Beginnen wir so:


"400 Jahre sind ein einzigartiger Fall. Wenn ein Jahr durch 400 teilbar ist, dann ist dies ein Schaltjahr. 100 Jahre sind auch ein einzigartiger Fall. Wenn ein Jahr durch 100 teilbar ist, ist es kein Schaltjahr, es sei denn, es ist durch 400 teilbar Die Priorität für den Sonderfall lautet „400 Jahre“. Wenn es keine Sonderfälle gibt, ist dieses Jahr ein Schaltjahr, sofern es durch 4 geteilt wird.


Es klingt klar, aber nicht prägnant, daher werden wir den Text ein wenig kürzen:
„Wenn das Jahr durch 400 geteilt wird, ist es ein Schaltjahr. Wenn es durch 100 geteilt wird, ist dies ein normales Jahr, aber wenn es durch 4 geteilt wird, ist dies ein Schaltjahr. "


Wenn wir diese Wörter in Code umwandeln, erhalten wir ungefähr Folgendes:


 if divisbleBy(400): return LeapYear elif divisbleBy(100) return NormalYear elif divisbleBy(4): return LeapYear else: return NormalYear 

Schlussfolgerungen


Schwer verständlicher Code ist für fast alle Programmierer an der Tagesordnung. Wir werden uns und unseren Kollegen helfen, wenn wir Code schreiben, der leicht in Worten zu beschreiben ist.
Und am wichtigsten ist, dass das Schreiben von Code auf diese Weise am einfachsten ist, da es keine vergebliche mentale Anstrengung gibt. Der „Trick“ besteht darin, dass der Algorithmus zuerst durch die Wörter beschrieben wird, die später zum Schreiben des Codes verwendet werden.


In vielen Organisationen wurde Code bereits in Abnahmetests oder User Stories in Worten beschrieben, was die Produktivität verbessern kann.

Source: https://habr.com/ru/post/de472830/


All Articles