Integration Tests mit Codeception in Gitlab Pipeline beschleuningen durch optimieren der Datenbankzugriffe.
Vermeiden von Schreibrechteproblemen in php:8.2-fpm Docker Containern
Gnome Shell Extension Draw on Screen - Einfach auf den Desktop zeichnen und schreiben.
Weather forecast in Home Assistant
|
Auf Empfehlung eines Arbeitskollegen hin habe ich mir das Buch Object Design Style Guide von Matthias Noback bestellt. Da ich es in Ruhe lesen wollte, abseits des Bildschirms, habe ich mich für die gedruckte Version entschieden. Das Buch ist in leicht zu lesendem Englisch geschrieben.
Das Buch gibt eine Praxisanleitung für die objektorientierte Programmierung. Dabei versucht der Autor anhand von Codebeispielen zu erläutern wie man verständlichen und wartbaren Code schreibt, indem er die Probleme der verschiedenen Implementierungen beschreibt. Hierbei wird nicht die Theorie dahinter in den Vordergrund gestellt, sondern dient dem Leser, als Orientierung, um auch in der Kommunikation mit anderen Entwicklern die entsprechenden Fachausdrücke zu kennen (Optimierte Kommunikation).
Die für die Codebeispiele verwendete Sprache ist eine leicht verständliche Pseudo-Programmiersprache, die sich zwischen PHP und Java ansiedelt. Jedes Kapitel bringt Aufgaben und Lösungen mit.
Das erste Kapitel macht eine kurze Zusammenfassung, wie Objekte technisch strukturiert sind. Das sind Voraussetzungen, die der Leser mitbringen sollte und hier notfalls auffrischen kann.
Das Kapitel erklärt die grundlegenden Arten von Services, deren sauberen Initialisierung und Umgang mit den Abhängigkeiten. Dazu gehört auch das Thema, welche Parameter gehören, in den Konstruktor, welche werden einer Methode übergeben.
Hier werden wichtige Grundlagen der Objektorientierung vermittelt und klar unterteilt, welch Objekttypen man in der Umsetzung nicht vermischen sollte.
Ein Kapitel über Entities, DTO's und Value Objects. Es erläutert, wie man dafür sorgt, dass diese in einem konsistenten Zustand bleiben (außer DTO). Zudem hilfreiche Hinweise über die Benennung sinnvoller Methodennamen und dem Umgang mit Inkonsistenzen.
In diesem Kapitel wird darauf eingegangen, welche Objekte veränderbar und welche es nicht sein sollten, um intransparente Fernwirkungen zu vermeiden. Und wie man dabei durch Events in Objekten die Veränderungen des Zustands durch Command methods registrieren kann.
Genereller Aufbau von Objekten abseits seiner Business Logik (Input-/Output validation) Exception handling usw.
Der Autor geht in diesem Kapitel auf den Aufbau von Repositories ein, wann und warum man diese, beim Überschreiten der Systemgrenzen, einsetzt. Auch wie man die Abfragen gestalten sollte und diese Repositories in UnitTests gegen Stubs/Fakes tauscht. Dabei wird das CQRS Prinzip anhand von Praxisbeispielen angewendet.
Hierbei wird der Einsatz von command Method und Events behandelt, um Aufgaben zu erledigen. Ziel des Kapitels ist es zu erkennen, wann welche einzusetzen sind.
Das Kapitel behandelt die Trennung von Lese-/Schreibmodellen für die verschiedenen Anforderungen einer Applikation. Auch der Aufbau von Read models from domain events wird behandelt und abgegrenzt zum Thema Event sourcing.
Dieses Kapitel widmet sich dem Thema, wie man eine Applikation so aufbaut, dass es einfach möglich bleibt Anpassungen vorzunehmen, ohne Basisklassen anzupassen. Dazu gehören die Themen Inheritance (Ableitung), Template method und Composition.
In diesem Kapitel wird das vermittelte Wissen über die verschiedenen Objekttypen anhand einer Webapplikation noch einmal verdeutlicht. Dabei wird ersichtlich, in welcher Art und Weise die Objekte miteinander zusammenhängen.
Hier gibt der Autor Hinweise auf weiterführende Literatur und Prinzipien wie hexagonal architecture und Domain driven design.
Das vom Autor selbst gesetzte Ziel "..., and it often proves difficult to apply the theory to everyday coding problems.", also das Vermitteln der Theorie hinter objektorientierten Programmieren in einer anwendbaren Form mit Bezug zum Alltag eines Entwicklers, wird meiner Meinung nach sehr gut erreicht.
Viele Codestellen aus dem Buch decken sich mit den Problemen, die ich bei mir und anderen Entwicklern sehe und dessen Lösung ich nun durch nicht selber erläutern, sondern auf entsprechende Stellen im Buch verweisen kann.
Die im Buch gestellten Aufgaben fördern meiner Meinung nach das Verständnis und sind gut nachzuvollziehen.
Gut, dass es das Buch gibt. Zum einen es erleichtert die Ausbildung von Azubis in der Praxis, zum anderen gibt es Entwicklern die sich durch Erfahrung weiter entwickelt haben den Bezug, zu den dahinter stehenden Theorien ihres erlernten "Bauchgefühls".
Ich persönlich habe am meisten aus dem siebten Kapitel mitnehmen können. Hierbei wird verständlich die Abgrenzung von Buisness Logik in primary Tasks und secondary Tasks erklärt. Jetzt finde ich den Unterschied einfach und klar, vorher habe ich das über mein Gefühl geregelt.
In einem anderen Artikel habe ich für mich noch ein paar Gedanken formuliert, wo ich die Grenzen für so manche Regel sehe.
Einige Notizen, die ich mir beim Lesen des Buches gemacht habe, damit ich die Buchstellen schnell wiederfinden kann. Sie sind vielleicht hilfreich, wenn man in Google danach sucht, auf dieses Buch zu stoßen.
Article relase date: / Last update: