Buchrezension PHP Design Patterns von Stephan Schmidt

Ich habe mir ehrlich gesagt gut überlegt, ob ich überhaupt eine Rezension für dieses Buch schreiben soll, weil PHP Gangsta schon eine sehr schöne und vollständige Rezension geschrieben hat. Ich denke PHP Gangsta hat über den Inhalt und den Aufbau des Buches alles gesagt, was es zu sagen gibt. Daher werde ich einfach einige Ergänzungen anbringen.

Schritt für Schritt

Bei jedem Pattern das erklärt wird, hat man meistens eine Ausgangsposition bzw. eine Problematik. Anhand dieser wird Schritt für Schritt erklärt, wie man zum Ziel gelangt. Dadurch wird der Lerneffekt viel grösser, als wenn man einfach die fertige Lösung präsentiert und erklärt kriegt.
Einige male wurde auch eine frühere Problemstellung aufgegriffen und mit einem neuen Pattern noch besser umgesetzt. Man kann somit schön vergleichen, welches Pattern für welchen Fall geeigneter ist.

Einsatz von Patterns sinnvoll?

Lange Zeit habe ich mit dem Einsatz von Patterns schwer getan. Ich wollte mir einfach nicht aufzwingen lassen, wie ich etwas zu lösen habe und ausserdem war ich mir stets unsicher, welches Pattern das richtige ist.

Diese Denkweise war aber grundlegend falsch. Ich versuche zu erklären warum das so ist:

  • Man muss das Rad nicht jedesmal neu erfinden. Warum soll man etwas nochmal neu erfinden, wenn es für ein Standardproblem eine bewährte Lösung gibt? Man sollte die Zeit für sinnvolleres nutzen.
  • Aller Anfang ist schwer. Wenn ich beim Einsatz eines Patterns unsicher bin, sollte ich so lange nach Beispielen suchen, bis ich sicher bin (z.B. während der Zeit, während man das Rad nicht neu erfindet 🙂 )
  • Patterns verbessern die Kommunikation. Als Entwickler in einem Team muss viel kommuniziert werden. Wenn alle vom gleichen Reden, also z.B. von einem Pattern, erleichtert dies die Kommunikation ungemein. Auch wenn jemand im Code ein Pattern erkennt, ist es für denjenigen einfacher den Code zu verstehen.

Eine negative Konsequenz beim Einsatz von Patterns gibt es aber häufig:

Der Code wird komplexer, weil er abstrahiert wird. Dies ist aber ein nötiges Übel, um Code flexibler zu machen.

Clean Code

In den Codebeispielen wird permanent gegen Interfaces implementiert und es wird auch immer wieder gesagt, dass dies enorm wichtig ist. Auch wird ein hohes Gewicht auf Dependency Injection und Modularisierung gelegt. Es werden also genau die Prinzipien angewandt, welche unter anderem in Clean Code propagiert werden.

Patterns in Frameworks

Wie ich in einem früheren Artikel bereits geschrieben habe, bin ich absolut pro Framework. Das gute ist, dass aktuelle Frameworks gängige Patterns anbieten und diese auch konsequent einsetzen. Wenn man die verschiedenen Patterns also kennt, wird es einem also viel einfacher fallen, mit einem Framwork zu arbeiten.

Fazit

Das Buch ist eine absolute Kaufempfehlung für fortgeschrittene PHP Programmierer. Nachdem man es durchgearbeitet hat, dient es auch als Nachschlagewerk für die verschiedenen Patterns.

Leave a Reply

Your email address will not be published. Required fields are marked *