Was sind Entwurfsmuster und wofür braucht man die?

Entwurfsmuster, Refactoring und Clean Code

Entwurfsmuster sind vorgefertigte Klassenstrukturen, die häufig in großen 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. Entwurfsmuster lösen Standardprobleme von komplexen Programmen. Refactoring ist die Arbeit die du erledigen musst um deinen Code zu warten oder zu reparieren, nur so schmeißt du Designfehler raus. 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.

Entwurfsmuster

Das ist die hohe Kunst der Programmierung. Das beste Beispiel für ein Entwurfsmuster ist das Command-Muster. Was macht dieses? 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. Dabei unterteilen sich die Entwurfsmuster in 3 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, …

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.

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.

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.

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 das Warten also das Reparieren von Programmcode gemeint. Allerdings werden hier keine Programmierfehler repariert sondern sogenannter schlechter oder stinkender Code (nicht Kot!!!). 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 sauberen Quelltext ist genau das Gegenteil von schlechten 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ährt 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 2 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. Verwede lieber einen langen Variablennamen, der seinen Zweck beschreibt, als ein nichtssagenden Kommentar.

2 Regeln für Funktionen

1. Die Funktion sollte sehr kurz sein.

2. Wenn sie kurz ist, sollte sie noch kürzer sein.

Mit diesem 2 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 werden.

 

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.

Das könnte dich auch interessieren

1 Antwort

Trackbacks & Pingbacks

  1. […] Auch wenn du bereits jede Software schreiben kannst, die du dir vorstellst, gibt es immer noch ein paar Themen, die du lernen solltest um die Qualität deiner Software erheblich zu erhöhen. Mit Design Pattern kannst du Funktionen realisieren wie einen Rückgängig-Befehl. Mit Refactoring lernst du deinen Code sauber umzustrukturieren. Clean Code bringt dir bei deinen Code nicht nur so zu schreiben dass er funktioniert, sondern auch noch Jahre später verständlich für dich ist. So wirst du das Schreiben von Programmcodes perfektionieren. Um mehr darüber zu erfahren klicke hier. […]

Dein Kommentar

An Diskussion beteiligen?
Hinterlasse uns Deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.