Entwurfsmuster sind vorgefertigte Klassenstrukturen, die häufig in großen und komplexen Programmen auftauchen.
Wenn du hier angekommen bist, hast du bereits viel über das Programmieren gelernt und bist bereits in der Lage richtige Programme zu schreiben.
Allerdings möchtest du deine Programme größer gestalten, sie sollen mehr Funktionalität haben als andere Programme.
Ab diesem Punkt kommst du in Probleme hinein die nur mittels weiterer Techniken gelöst werden können.
Wofür benutzt man Entwurfsmuster?
Entwurfsmuster lösen Standardprobleme von komplexen Programmen.
Refactoring ist die Arbeit die du erledigen musst um deinen Code zu warten oder zu reparieren. Dadurch entfernst du Designfehler.
Clean Code ist die Arbeit, deinen Code nicht nur so zu schreiben, dass er nur funktioniert sondern, dass dieser sauber also lesbar ist.
Mit diesen Methoden kannst du dann schon professionelle Software schreiben. Gehen wir kurz durch die drei Themenbereiche durch.
Ein Beispiel für Entwurfsmuster
Das beste Beispiel für ein Entwurfsmuster ist das Command-Muster.
Was macht das Command-Muster?
Weißt du wie man ein Rückgängig- oder einen Wiederholen-Befehl programmiert?
Nein?
Dies funktioniert mit dem Command-Muster.
Also was machen Entwurfsmuster?
Sie geben dir Lösungen für Standardprobleme aus der objektorientierten Programmierung.
Unterteilung der Entwurfsmuster
Dabei unterteilen sich die Entwurfsmuster in drei Hauptbereiche, es gibt auch noch weitere Bereiche, allerdings sind diese erstmal die wichtigsten.
- Erzeugungsmuster: Abstract Factory, Singleton, Builder, Factory Method, Multiton, Prototype, ...
- Strukturmuster: Adapter, Bridge, Container, Decorator, Facade, Flyweight, Composite, Proxy, ...
- Verhaltensmuster: Observer, Visitor, Interpreter, Iterator, Command, Memento, Nullobject, Strategy, Mediator, State, ...
Erzeugungsmuste
Die Erzeugungsmuster lösen Probleme bei der Erstellung von Objekten aus Klassen.
Dabei gibt es verschiedene Fälle mit denen man neue Objekte erstellen kann.
Die wohl bekanntesten sind der Singleton und die Factory.
- Der Singleton stellt sicher, dass immer nur ein Objekt einer Klasse erstellt werden kann.
- Die Factory ist wie eine Fabrik, sie produziert Objekte und gibt diese an den "Kunden" zurück.
Strukturmuster
Die Strukturmuster helfen dir, dein Programm sauber aufzubauen und zu strukturieren. Wenn du einem anderen Entwickler erklärst, du hast einen Container programmiert, weiß er ganz genau wovon du sprichst.
Verhaltensmuster
Die Verhaltensmuster lösen eine bestimmte Aufgabe.
Der Observer zum Beispiel ist dafür da, ein bestimmtes Objekt zu beobachten (observieren) und dann anderen Objekten Bescheid zu sagen, wenn sich etwas ändert.
Bei vielen Sprachen ist der Observer als Event oder Delegate implementiert.
Mit dem Commando-Muster kann man, wie bereits erwähnt, den berühmten Rückgängig-Befehl und auch noch andere Funktionen programmieren.
Alleine für Entwurfsmuster gibt es ganze Bücher. Du wirst sicherlich nicht alle Muster benötigen, aber mit der richtigen Erfahrung wirst du diese von alleine benutzen wollen.
Anti-Pattern
Leider gibt es auch das Gegenteil von Entwurfsmustern. Das sind die sogenannten Antipattern.
Das sind Lösungen in Programmen die zu Fehlern führen und schlecht wartbar sind.
Auch du wirst irgendwann mit solchen Antipattern zutun haben. Wie du damit umgehst, lernst du im Refactoring.
Refactoring
Mit dem Refactoring wird die Wartung, also das Reparieren von Programmcode, gemeint.
Allerdings werden hier keine Programmierfehler repariert, sondern sogenannter schlechter oder stinkender Code.
Beim Refactoring lernst du, wie du schlechten Code so umstrukturieren kannst, dass dieser wieder sauber ist.
Dabei steht die Funktionalität deines Programmes nicht im Vordergrund, sondern andere wichtige Punkte in deinem Quelltext.
Diese sind:
- Lesbarkeit
- Übersichtlichkeit
- Verständlichkeit
- Erweiterbarkeit
- Keine Codeduplikate
- Testbarkeit
Damit man dies erreichen kann, gibt es ein paar Methoden und Techniken.
Diese fanden beim Umbenennen von Variablen und gehen bis hin zum kompletten Umstrukturieren des Quellcodes. Diese Techniken stammen von Martin Fowler.
Clean Code
Mit Clean Code, also sauberem Quelltext, ist genau das Gegenteil von schlechtem Code gemeint.
Der Software-Entwickler Robert C. Martin hat diesen Begriff geprägt.
Sauberer Quellcode, aber auch saubere Software, ist stabiler und wartbarer.
Dafür muss diese nicht nur funktionieren, sondern auch intuitiv verständlich sein.
Das hört sich jetzt vielleicht kompliziert an, ist es aber gar nicht. Du musst einfach bedenken, dass du deine Quelltext ungefähr 10-Mal öfter liest als schreibst.
Das heißt jeder geschriebene Codezeile wird ungefähr 10 Mal gelesen. Aus diesem Grund sollte deine Software auch dementsprechend leicht zu lesen sein, oder?
Um dies zu erreichen setzt man zum einen Entwurfsmuster ein, macht Refactorings seiner Programme und wendet beim Programmieren ein paar Prinzipien an die leicht zu erlernen sind.
Allerdings erfordert sauberer Code eine sehr hohe Disziplin. Denn wenn es mal schnell gehen muss, neigt man dazu schlechten Code zu produzieren.
Folgend schonmal zwei Prinzipien:
Aussagekräftige Namen
Verwende immer aussagekräftige Namen für Funktionen, Klassen und Variablen.
Wenn du dies tust werden sogar Kommentar fast überflüssig. Verwende lieber einen langen Variablennamen, der seinen Zweck beschreibt, als einen nichts-sagenden Kommentar.
2 Regeln für Funktionen
- Die Funktion sollte kurz sein.
- Wenn sie kurz ist, sollte sie noch kürzer sein.
Mit diesem zwei Prinzipien lasse ich dich erstmal alleine. Denn auch zu diesem Thema gibt es ganze Bücher.
Wichtig ist, dass du bei diesem Thema lernst wie man stabile und wartbare Programme schreibt.
Du kannst das tollste Spiel auf der ganzen Welt programmiert haben, aber wenn es 3 Jahre dauert um einen Fehler zu lösen, wirst du damit nicht erfolgreich.
Fazit
In diesem Lernbereich lernst du die richtige professionelle Softwareentwicklung.
Wenn du in der Lage bist Entwurfsmuster zu benutzen und sauberen Quelltext zu schreiben, dann hast du eigentlich schon fast alle wichtigen Techniken drauf, die es dir ermöglichen wirklich professionelle Programme zu schreiben.
Ab dieser Stelle ist es eigentlich nur noch deiner Kreativität und deinem Fleiß überlassen, die Programme zu schreiben die du dir ausdenkst.
Allerdings gibt es noch weitere Themen die wichtig sind. Wie ist es zum Beispiel mit Kundenwünschen?
Oder der Zeitlichen Planung wie lange du für ein Programm schreiben musst?
Hierfür musst du als nächstes etwas über den Softwareentwicklungszyklus lernen.
Mit Programmieren hat dies dann auch nicht mehr viel zutun, gehört aber dazu.
- Programmiere echte Apps als Anfänger
- Keine Installation, sofort loslegen
- Komplett praxisbezogen
- Zugriff auf Online-Editor
