Advertisement
  1. Code
  2. Theory

Eleganten und lesbaren Code schreiben

Length:LongLanguages:

German (Deutsch) translation by Federicco Ancie (you can also view the original English article)

In diesem Tutorial geben wir Ihnen neun praktische Techniken zum Schreiben von elegantem und lesbarem Code. Wir werden nicht über bestimmte Architekturen, Sprachen oder Plattformen sprechen. Der Fokus liegt auf dem Schreiben von besserem Code. Fangen wir an.

"Das Messen des Programmierfortschritts anhand von Codezeilen ist wie das Messen des Fortschritts beim Flugzeugbau nach Gewicht." - Bill Gates

Einführung

Wenn Sie ein Entwickler sind, gibt es Zeiten, in denen Sie Code geschrieben haben, und nach einigen Tagen, Wochen oder Monaten haben Sie zurückgeschaut und sich gesagt: "Was macht dieser Code?" Die Antwort auf diese Frage könnte gewesen sein "Ich weiß es wirklich nicht!" In diesem Fall können Sie den Code nur von Anfang bis Ende durchgehen und versuchen zu verstehen, was Sie beim Schreiben gedacht haben.

Das passiert meistens, wenn wir faul sind und nur die neue Funktion implementieren möchten, nach der der Client gefragt hat. Wir wollen die Arbeit nur mit so wenig Aufwand wie möglich erledigen. Und wenn es funktioniert, interessiert uns der Code selbst nicht, weil der Client die hässliche Wahrheit nie sehen wird, geschweige denn verstehen wird. Richtig? Falsch. Heutzutage ist die Zusammenarbeit an Software zum Standard geworden, und die Benutzer können den von Ihnen geschriebenen Code sehen, lesen und überprüfen. Auch wenn Ihr Code nicht von Ihren Kollegen geprüft wird, sollten Sie es sich zur Gewohnheit machen, klaren und lesbaren Code zu schreiben. Immer.

Meistens arbeiten Sie nicht alleine an einem Projekt. Wir sehen häufig hässlichen Code mit Variablen mit Namen wie i, a, p, pro und rqs. Und wenn es wirklich schlimm wird, ist dieses Muster im gesamten Projekt sichtbar. Wenn Ihnen das bekannt vorkommt, haben Sie sich sicher die Frage gestellt: "Wie kann diese Person Code wie diesen schreiben?" Dies macht Sie natürlich umso dankbarer, wenn Sie auf klaren, lesbaren und sogar schönen Code stoßen. Klarer und sauberer Code kann in Sekunden gelesen werden und spart Ihnen und Ihren Kollegen viel Zeit. Das sollte Ihre Motivation sein, Qualitätscode zu schreiben.

1. Leicht zu verstehen

Wir sind uns alle einig, dass Code leicht zu verstehen sein sollte. Richtig? Das erste Beispiel konzentriert sich auf den Abstand. Schauen wir uns zwei Beispiele an.

Obwohl das Ergebnis dieser Beispiele identisch ist, sehen sie ganz anders aus. Warum sollten Sie mehr Codezeilen verwenden, wenn Sie weniger schreiben können? Lassen Sie uns zwei weitere Beispiele untersuchen, die Sie bestimmt häufig sehen.

Auch hier ist das Ergebnis dieser Beispiele identisch. Welches ist besser? Und warum? Bedeuten weniger Codezeilen besseren Code? Wir werden diese Frage später in diesem Tutorial noch einmal wiederholen.

2. Ist kleiner immer besser?

In der Informatik hört man oft den Satz "weniger ist mehr". Im Allgemeinen ist es umso besser, wenn Sie ein Problem in weniger Codezeilen lösen können. Sie werden wahrscheinlich weniger Zeit brauchen, um eine Klasse mit 200 Zeilen zu verstehen, als eine Klasse mit 500 Zeilen. Ist das jedoch immer wahr? Schauen Sie sich die folgenden Beispiele an.

Stimmen Sie nicht zu, dass das zweite Beispiel leichter zu lesen und zu verstehen ist? Sie müssen in der Lage sein, die Lesbarkeit zu optimieren. Natürlich können Sie dem ersten Beispiel einige Kommentare hinzufügen, um das Verständnis zu erleichtern. Ist es jedoch nicht besser, die Kommentare wegzulassen und Code zu schreiben, der leichter zu lesen und zu verstehen ist?

3. Benennen

Die Auswahl beschreibender Namen für Dinge wie Variablen und Funktionen ist ein Schlüsselaspekt beim Schreiben von lesbarem Code. Es hilft sowohl Ihren Kollegen als auch Ihnen, den Code schnell zu verstehen. Das Benennen einer Variablen tmp sagt nichts anderes aus, als dass die Variable aus irgendeinem Grund vorübergehend ist, was nichts weiter als eine fundierte Vermutung ist. Es wird nicht angegeben, ob die Variable einen Namen, ein Datum usw. speichert.

Ein weiteres gutes Beispiel ist die Benennung eines Methoden stop. Es ist an sich kein schlechter Name, aber das hängt wirklich von der Implementierung der Methode ab. Wenn eine gefährliche Operation ausgeführt wird, die nicht rückgängig gemacht werden kann, können Sie sie umbenennen, um sie kill oder pause, wenn die Operation fortgesetzt werden kann. Haben Sie eine Idee?

Wenn Sie mit einer Variablen für das Gewicht von Kartoffeln arbeiten, warum würden Sie sie tmp nennen? Wenn Sie diesen Code einige Tage später erneut aufrufen, werden Sie sich nicht daran erinnern, wofür tmp verwendet wird.

Wir sagen nicht, dass tmp ein schlechter Name für eine Variable ist, da es Zeiten gibt, in denen tmp als Variablenname durchaus sinnvoll ist. Schauen Sie sich das folgende Beispiel an, in dem tmp überhaupt keine schlechte Wahl ist.

Im obigen Beispiel beschreibt tmp, was es tut, es speichert vorübergehend einen Wert. Es wird nicht an eine Funktion oder Methode übergeben und nicht erhöht oder geändert. Es hat eine genau definierte Lebensdauer und kein erfahrener Entwickler wird vom Namen der Variablen abgelenkt. Manchmal ist es jedoch einfach nur Faulheit. Schauen Sie sich das nächste Beispiel an.

Wenn tmp die Benutzerinformationen speichert, warum heißt sie dann nicht userInfo? Die richtige Benennung von Variablen, Funktionen, Methoden, Klassen usw. ist wichtig, wenn Sie lesbaren Code schreiben. Dies macht Ihren Code nicht nur lesbarer, sondern spart Ihnen auch in Zukunft Zeit.

Objective-C ist ziemlich ausführlich, aber sehr leicht zu lesen. Apple verwendet eine genau definierte Namenskonvention, die Sie in den meisten Programmiersprachen anwenden können. Weitere Informationen zu dieser Namenskonvention finden Sie unter Programmieren mit Objective-C.

4. Fügen Sie Namen eine Bedeutung hinzu

Wie wir im vorherigen Tipp gesehen haben, ist es wichtig, Namen mit Bedacht auszuwählen. Es ist jedoch ebenso wichtig, den Namen, die Sie für Variablen, Funktionen, Methoden usw. verwenden, eine Bedeutung hinzuzufügen. Dies hilft nicht nur, Verwirrung zu vermeiden, sondern erleichtert auch das Verständnis des von Ihnen geschriebenen Codes. Die Auswahl eines sinnvollen Namens entspricht fast dem Hinzufügen von Metadaten zu einer Variablen oder Methode. Wählen Sie beschreibende Namen und vermeiden Sie generische. Das Wort add ist beispielsweise nicht immer ideal, wie Sie im nächsten Beispiel sehen können.

Es ist nicht klar, was addUser tun soll. Fügt es einen Benutzer zu einer Liste von Benutzern, zu einer Datenbank oder zu einer Liste von Personen hinzu, die zu einer Party eingeladen wurden? Vergleichen Sie dies mit registerUser oder signupUser. Das macht mehr Sinn. Richtig? Schauen Sie sich die folgende Liste an, um eine bessere Vorstellung davon zu bekommen, worauf wir fahren.

Wort Synonyme
machen erledigen, handeln, tun, komponieren, hinzufügen Anfang starten, erstellen, beginnen, öffnen explodieren detonieren, explodieren, losfahren, platzen

5. Namensgröße

Viele Programmierer mögen keine langen Namen, weil sie schwer zu merken und schwer zu tippen sind. Natürlich sollte ein Name nicht lächerlich lang sein wie newClassForNavigationControllerNamedFirstViewController. Das ist schwer zu merken und macht Ihren Code einfach hässlich und unlesbar.

Wie wir zuvor gesehen haben, sind die entgegengesetzten Kurznamen auch nicht gut. Was ist die richtige Größe für einen Variablen- oder Methodennamen? Wie entscheiden Sie sich zwischen der Benennung einer Variablen len, length oder user_name_length? Die Antwort hängt vom Kontext und der Entität ab, an die der Name gebunden ist.

Lange Namen sind bei Verwendung einer modernen IDE (Integrated Development Environment) kein Problem mehr. Durch die Vervollständigung des Codes können Sie Tippfehler vermeiden und Vorschläge machen, um das Erinnern an Namen weniger schmerzhaft zu machen.

Sie können kurze (er) Namen verwenden, wenn die Variable lokal ist. Darüber hinaus wird empfohlen, kürzere Namen für lokale Variablen zu verwenden, damit Ihr Code lesbar bleibt. Schauen Sie sich das folgende Beispiel an.

6. Boolesche Werte benennen

Boolesche Werte können schwierig zu benennen sein, da sie je nach Art und Weise, wie Sie den Namen lesen oder interpretieren, eine andere Bedeutung haben können. Im nächsten Codeausschnitt kann read_password bedeuten, dass das Passwort vom Programm gelesen wurde, aber es kann auch bedeuten, dass das Programm das Passwort lesen sollte.

Um dieses Problem zu vermeiden, können Sie den obigen Booleschen Wert in didReadPassword umbenennen, um anzuzeigen, dass das Kennwort gelesen wurde, oder shouldReadPassword, um anzuzeigen, dass das Programm das Kennwort lesen muss. Dies sehen Sie beispielsweise in Objective-C häufig.

7. Kommentieren oder nicht kommentieren

Das Hinzufügen von Kommentaren zum Code ist wichtig, aber es ist ebenso wichtig, sie sparsam zu verwenden. Sie sollten verwendet werden, um jemandem zu helfen, Ihren Code zu verstehen. Das Lesen von Kommentaren nimmt jedoch auch Zeit in Anspruch, und wenn ein Kommentar nicht viel Wert hinzufügt, wird diese Zeit verschwendet. Das nächste Code-Snippet zeigt, wie Kommentare nicht verwendet werden.

Sind diese Codefragmente für Sie hilfreich? Die Antwort ist wahrscheinlich "Nein". Die Kommentare in den obigen Beispielen fügen keine zusätzlichen Informationen hinzu, zumal die Methodennamen bereits sehr beschreibend sind, was in Objective-C üblich ist. Fügen Sie keine Kommentare hinzu, die das Offensichtliche erklären. Schauen Sie sich das nächste Beispiel an. Ist das nicht eine viel bessere Verwendung von Kommentaren?

Kommentare wie diese machen es sehr einfach, schnell und effizient in einer Codebasis zu navigieren. Dies erspart Ihnen das Lesen des Codes und hilft Ihnen, die Logik oder den Algorithmus zu verstehen.

8. Stil und Konsistenz

Jede Sprache oder Plattform hat einen (oder mehrere) Styleguides, und selbst die meisten Unternehmen haben einen. Setzen Sie die geschweiften Klammern einer Objective-C-Methode in eine separate Zeile oder nicht?

Die Antwort ist, dass es keine Rolle spielt. Es gibt keine richtige Antwort. Natürlich gibt es Styleguides, die Sie übernehmen können. Wichtig ist, dass Ihr Code stilistisch konsistent ist. Auch wenn dies die Qualität Ihres Codes möglicherweise nicht beeinträchtigt, beeinträchtigt es sicherlich die Lesbarkeit und wird höchstwahrscheinlich Ihre Kollegen oder jeden, der Ihren Code liest, zum Teufel stören. Für die meisten Entwickler ist hässlicher Code die schlechteste Art von Code.

9. Fokussierte Methoden und Funktionen

Ein häufiger Fehler unter Entwicklern besteht darin, möglichst viele Funktionen in Funktionen und Methoden zu packen. Dies funktioniert, ist aber unelegant und macht das Debuggen zu einem Schmerz im Nacken. Ihr Leben - und das Ihrer Kollegen - wird viel einfacher, wenn Sie größere Probleme in winzige Teile zerlegen und diese Teile in separate Funktionen oder Methoden umwandeln. Schauen Sie sich das nächste Beispiel an, in dem wir ein Image auf die Festplatte schreiben. Dies scheint eine triviale Aufgabe zu sein, aber es steckt noch viel mehr dahinter, wenn Sie es richtig machen wollen.

Wenn eine Codeeinheit versucht, zu viel zu tun, erhalten Sie häufig tief verschachtelte bedingte Anweisungen, viele Fehlerprüfungen und übermäßig komplexe bedingte Anweisungen. Diese Methode führt drei Aktionen aus: Abrufen des Pfads des Dokumentenverzeichnisses der Anwendung, Abrufen und Erstellen des Pfads für das Archivverzeichnis und Schreiben des Abbilds auf die Festplatte. Jede Aufgabe kann wie unten gezeigt in eine eigene Methode gestellt werden.

Dies ist viel einfacher zu debuggen und zu warten. Sie können die applicationDocumentsDirectory-Methode sogar an anderen Stellen des Projekts wiederverwenden. Dies ist ein weiterer Vorteil, wenn größere Probleme in überschaubare Teile zerlegt werden. Das Testen von Code wird auch viel einfacher.

Abschluss

In diesem Artikel haben wir uns das Schreiben von lesbarem Code genauer angesehen, indem wir Namen für Variablen, Funktionen und Methoden mit Bedacht ausgewählt haben, beim Schreiben von Code konsistent waren und komplexe Probleme in überschaubare Teile zerlegten. Wenn Sie Fragen oder Feedback haben, können Sie unten einen Kommentar hinterlassen.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.