10 Grundlegende Programmierprinzipien, die jeder Programmierer befolgen muss
Jeder kann Code schreiben. Aber guter Code? Dort wird es hart.
Wir alle haben Horrorgeschichten über Spaghetti-Code, massive If-else-Ketten, ganze Programme, die durch das Ändern einer Variablen kaputt gehen können, Funktionen, die wie verschleiert aussehen, und so weiter gehört. Dies geschieht, wenn Sie versuchen, ein lieferbares Produkt mit nur einem Semester Programmiererfahrung herzustellen.
Geben Sie sich nicht damit ein, Code zu schreiben funktioniert. Ziel ist es, Code zu schreiben, der das kann beibehalten werden - Nicht nur von Ihnen selbst, sondern auch von jedem, der irgendwann in der Zukunft an der Software arbeitet. Zu diesem Zweck gibt es einige Grundsätze, die Ihnen dabei helfen, Ihre Tat zu verbessern.
1. KUSS
Das “halten Sie es einfach dumm” Prinzip Dies gilt für fast das gesamte Leben, ist aber besonders bei mittelgroßen bis großen Programmierprojekten erforderlich.
Es beginnt am Anfang, wenn Sie den Umfang des zu erstellenden Bereichs definieren. Nur weil Sie sich leidenschaftlich für die Spieleentwicklung interessieren, heißt das nicht, dass Sie das nächste erstellen können World of Warcraft oder schwerer Kraftfahrzeugdiebstahl. Wenn Sie der Meinung sind, dass Sie genug vereinfacht haben, vereinfachen Sie es noch eine Stufe weiter - das Kriechen von Funktionen ist unvermeidlich, beginnen Sie also klein.
Aber auch nachdem das Programmieren begonnen hat, halten Sie es einfach. Der Entwurf und das Schreiben von komplexem Code dauert länger, ist anfälliger für Fehler und Fehler und lässt sich später nur schwer ändern. In den weisen Worten von Antoine de Saint-Exupery, “Perfektion wird erreicht, nicht wenn nichts mehr hinzuzufügen ist, sondern wenn nichts mehr übrig ist.”
2. TROCKNEN
Das “wiederhol dich nicht” Prinzip ist entscheidend für einen sauberen und einfach zu ändernden Code. Beim Schreiben von Code möchten Sie die Duplizierung von Daten und die Duplizierung der Logik vermeiden. Wenn Sie bemerken, dass derselbe Code immer und immer wieder geschrieben wird, brechen Sie dieses Prinzip.
Das Gegenteil von DRY-Code ist WET-Code: “schreibe alles zweimal” (oder “verschwendet alle Zeit”). Eine der besten Möglichkeiten zur Diagnose von WET-Code besteht darin, sich selbst zu fragen: Um das Verhalten des Programms auf irgendeine Weise zu ändern, wie viele Codebereiche müssten Sie ändern?
Angenommen, Sie schreiben eine Podcast-Verzeichnis-App. Auf der Suchseite haben Sie Code zum Abrufen der Details eines Podcasts. Auf der Podcast-Seite haben Sie Code, um die Details dieses Podcasts abzurufen. Auf der Favoritenseite derselbe Abrufcode. Erwägen Sie, alles in eine Funktion zu abstrahieren, damit Sie sie später an einer Stelle erledigen können, wenn Sie sie später bearbeiten müssen.
3. Offen / Geschlossen
Ob Sie Objekte schreiben Was ist objektorientierte Programmierung? In den Begriffen von Layman erläuterte Grundlagen Was ist objektorientierte Programmierung? In den Begriffen von Layman erläuterte Grundlagen Die meisten modernen Programmiersprachen unterstützen das Paradigma der "objektorientierten Programmierung" (OOP). Aber was genau ist OOP und warum ist es so nützlich? Weitere Informationen in Java oder in Python-Modulen sollten Sie darauf abzielen, Ihren Code zu erstellen offen für Erweiterung, aber zur Modifikation geschlossen. Dies gilt für alle Arten von Projekten, ist jedoch besonders wichtig, wenn eine Bibliothek oder ein Framework veröffentlicht wird, die von anderen verwendet werden sollen.
Angenommen, Sie pflegen ein GUI-Framework. Sie könnten es so veröffentlichen, wie es ist und erwarten, dass Endbenutzer den freigegebenen Code direkt ändern und integrieren. Aber was passiert, wenn Sie vier Monate später ein großes Update veröffentlichen? Wie setzen sie all Ihre Ergänzungen um, ohne all ihre Arbeit wegzuwerfen??
Geben Sie stattdessen den Code frei verhindert direkte Änderung und ermutigt Erweiterung. Dies trennt das Kernverhalten vom modifizierten Verhalten. Die Vorteile? Höhere Stabilität (Benutzer können das Kernverhalten nicht versehentlich brechen) und größere Wartbarkeit (Benutzer sorgen sich nur um erweiterten Code). Das Open / Closed-Prinzip ist der Schlüssel zu einer guten API. Was sind APIs und wie sind offene APIs, die das Internet ändern. Was sind APIs und wie sind offene APIs, die das Internet ändern. Haben Sie sich jemals gefragt, wie Programme auf Ihrem Computer und den von Ihnen besuchten Websites angezeigt werden "miteinander reden? Weiterlesen .
4. Zusammensetzung> Vererbung
Das “Zusammensetzung über Vererbung” Prinzip gibt an, dass Objekte mit komplexem Verhalten dies tun sollten, indem sie Instanzen von Objekten mit individuellem Verhalten enthalten, anstatt eine Klasse zu erben und neues Verhalten hinzuzufügen.
Ein übermäßiger Bezug auf die Vererbung kann zu zwei Hauptproblemen führen. Erstens kann die Vererbungshierarchie im Handumdrehen unordentlich werden. Zweitens haben Sie weniger Flexibilität beim Definieren von Sonderfallverhalten, insbesondere wenn Sie Verhalten von einem Vererbungszweig in einem anderen Vererbungszweig implementieren möchten:
Composition ist viel sauberer zu schreiben, einfacher zu warten und erlaubt eine nahezu unbegrenzte Flexibilität, soweit welche Verhaltensweisen Sie definieren können. Jedes einzelne Verhalten ist eine eigene Klasse, und Sie erstellen komplexe Verhaltensweisen, indem Sie einzelne Verhaltensweisen kombinieren.
5. Einzelverantwortung
Das Grundsatz der Einzelverantwortung sagt, dass jede Klasse oder jedes Modul in einem Programm sich nur mit der Bereitstellung einer bestimmten Funktionalität befassen sollte. Wie Robert C. Martin sagt, “Eine Klasse sollte nur einen Grund haben, sich zu ändern.”
Klassen und Module beginnen oft auf diese Weise, aber wenn Sie Funktionen und neue Verhaltensweisen hinzufügen, können sie sich leicht zu Gott-Klassen und Gott-Modulen entwickeln, die Hunderte oder sogar Tausende von Codezeilen beanspruchen. An dieser Stelle sollten Sie sie in kleinere Klassen und Module aufteilen.
6. Trennung von Bedenken
Das Prinzip der Trennung von Anliegen ist wie das Prinzip der Einzelverantwortung, aber auf einer abstrakteren Ebene. Im Wesentlichen sollte ein Programm so gestaltet sein, dass es viele verschiedene nichtüberlappende Einkapselungen hat, und diese Einkapselungen sollten einander nicht kennen.
Ein bekanntes Beispiel dafür ist das Model-View-Controller-Paradigma (MVC), das ein Programm in drei verschiedene Bereiche unterteilt: Die Daten (“Modell-”), die Logik (“Regler”) und was der Endbenutzer sieht (“Aussicht”). MVC-Variationen sind in den heute beliebtesten Web-Frameworks üblich.
Beispielsweise muss der Code, der das Laden und Speichern von Daten in einer Datenbank übernimmt, nicht wissen, wie diese Daten im Web gerendert werden sollen. Der Wiedergabecode kann Eingaben vom Endbenutzer entgegennehmen, leitet diese Eingaben jedoch zur Verarbeitung an den Logikcode weiter. Jeder Teil behandelt sich selbst.
Dies führt zu modularem Code, der die Wartung erheblich vereinfacht. Wenn Sie in der Zukunft den gesamten Rendering-Code neu schreiben müssen, können Sie dies tun, ohne sich Gedanken darüber zu machen, wie die Daten gespeichert oder die Logik verarbeitet wird.
7. YAGNI
Das “Du wirst es nicht brauchen” Prinzip ist die Idee, dass Sie niemals für die Funktionalität, die Sie benötigen, codieren kann in der Zukunft brauchen. Die Chancen stehen dir Gewohnheit Sie brauchen es und es wird Zeitverschwendung sein - und nicht nur das, sondern es wird unnötigerweise die Komplexität Ihres Codes erhöhen.
Sie können dies als eine konkrete Anwendung des KISS-Prinzips und als Antwort auf diejenigen betrachten, die das DRY-Prinzip zu ernst nehmen. Unerfahrene Programmierer versuchen häufig, möglichst abstrakten und generischen Code zu schreiben, um WET-Code zu vermeiden, aber zu viel Abstraktion führt zu aufgeblähtem, unmöglich zu wartendem Code.
Der Trick ist, das DRY-Prinzip nur dann anzuwenden, wenn Sie es brauchen. Wenn Sie bemerken, dass Codeabschnitte immer wieder geschrieben werden, dann abstrahieren Sie sie - aber niemals bei Ihnen denken Ein Stück Code wird immer wieder geschrieben. Mehr als nicht, wird es nicht sein.
8. Vermeiden Sie vorzeitige Optimierung
Das kein vorzeitiges Optimierungsprinzip ist ähnlich dem YAGNI-Prinzip. Der Unterschied ist, dass YAGNI die Tendenz anspricht Verhalten implementieren bevor sie notwendig sind, während dieses Prinzip die Tendenz zu Algorithmen beschleunigen bevor es notwendig ist.
Das Problem bei der vorzeitigen Optimierung besteht darin, dass Sie nie wirklich wissen können, wo die Engpässe eines Programms bis dahin liegen. Sie können natürlich raten, und manchmal haben Sie sogar Recht. In den meisten Fällen verschwenden Sie jedoch wertvolle Zeit mit dem Versuch, eine Funktion zu beschleunigen, die nicht so langsam ist, wie Sie denken oder nicht so oft aufgerufen werden, wie Sie es erwarten würden.
Erreichen Sie Ihre Meilensteine so einfach wie möglich Profilieren Sie Ihren Code echte Engpässe erkennen.
9. Refactor, Refactor, Refactor
Eine der schwierigsten Wahrheiten, die man als unerfahrener Programmierer akzeptieren kann, ist das Code kommt beim ersten Mal selten richtig heraus. Es kann Gefühl Richtig, wenn Sie diese glänzende neue Funktion implementieren, aber wenn Ihr Programm an Komplexität zunimmt, werden zukünftige Funktionen möglicherweise durch die Art und Weise, wie Sie diese frühere Version geschrieben haben, behindert.
Codebasen entwickeln sich ständig weiter. Es ist völlig normal, ganze Codeabschnitte erneut zu überarbeiten, neu zu schreiben oder sogar neu zu gestalten - und zwar nicht nur normal, sondern auch gesund. Sie wissen mehr über die Anforderungen Ihres Projekts jetzt als wenn du das gemacht hast Start, und Sie sollten dieses neu gewonnene Wissen regelmäßig verwenden, um alten Code zu überarbeiten.
Beachten Sie, dass es nicht immer ein großer Prozess sein muss. Nimm eine Seite von den Pfadfindern Amerikas, die von diesen Worten leben: “Lassen Sie den Campingplatz sauberer, als Sie ihn gefunden haben.” Wenn Sie alten Code überprüfen oder ändern müssen, bereinigen Sie ihn immer und lassen Sie ihn in einem besseren Zustand.
10. Clean Code> Clever Code
Apropos sauberer Code, lassen Sie Ihr Ego an der Tür und vergessen Sie das Schreiben von cleverem Code. Sie wissen, wovon ich spreche: Die Art von Code, die eher nach einem Rätsel als nach einer Lösung aussieht und nur dazu dient, zu zeigen, wie klug Sie sind. Die Wahrheit ist, dass es niemanden wirklich interessiert.
Ein Beispiel für cleveren Code ist das Packen von so viel Logik wie möglich in eine Zeile. Ein anderes Beispiel ist das Ausnutzen einer Sprache, um merkwürdige, aber funktionale Aussagen zu schreiben. Alles, was jemanden dazu veranlassen könnte, etwas zu sagen “Warte was?” beim Durchforsten Ihres Codes.
Gute Programmierer und lesbarer Code gehen Hand in Hand. Hinterlassen Sie Kommentare, wenn nötig. Halten Sie sich an Stilvorlagen, unabhängig davon, ob sie von einer Sprache (wie Python) oder einem Unternehmen (wie Google) diktiert werden. Beachten Sie die Idiome pro Sprache und hören Sie auf, Java-Code in Python oder umgekehrt zu schreiben. In unserem Artikel finden Sie Tipps zum Schreiben von Cleaner-Code. 10 Tipps zum Schreiben von Cleaner & Better Code. 10 Tipps zum Schreiben von Cleaner & Better Code. So können Sie heute saubereren Code schreiben. Weiterlesen .
Was macht einen guten Programmierer aus??
Fragen Sie fünf Personen und Sie erhalten 10 verschiedene Antworten. Ein guter Programmierer ist für mich derjenige, der versteht, dass die Kodierung letztendlich dem Endbenutzer dienen soll, mit dem man leicht im Team arbeiten kann und der seine Projekte pünktlich und präzise abschließt.
Wenn Sie gerade erst anfangen, machen Sie sich noch nicht allzu viele Sorgen. Konzentrieren Sie sich darauf, zu lernen, wie man ohne Stress codiert. Wenn Sie sich festgefahren fühlen, lesen Sie unseren Artikel über die Blockade des Programmierers. Und wenn Sie nicht gerade glücklich damit sind, Code zu schreiben, lesen Sie unseren Artikel über Anzeichen, dass Sie nicht als Programmierer gedacht sind ausgeschnitten, um ein Programmierer zu sein. Wenn Sie nicht ganz sicher sind, ob Sie ein Programmierer sein sollen, finden Sie hier einige Hinweise, die möglicherweise in die richtige Richtung weisen. Weiterlesen .
Wie würden Sie einen guten Programmierer definieren? Haben Sie Tipps für unerfahrene Programmierer, die sich verbessern möchten? Teilen Sie uns unten in den Kommentaren mit!
Erfahren Sie mehr über: Programmierung.