Seite 14 - Design Patterns
-
Maxim Mironjuk
-
April 17, 2025
Ein guter Schritt-Indikator zeigt jederzeit, wo im Formular-Wizard man sich befindet, welche Schritte bereits erledigt sind und wie viele noch folgen. Mit Tailwind CSS und Alpine.js lässt sich dieser Indikator konsequent aus wenigen wiederverwendbaren Zuständen aufbauen, statt für jeden Schritt eigenes Markup zu pflegen.
-
Maxim Mironjuk
-
April 10, 2025
Ein einzelnes Zod-Schema ist schnell geschrieben, aber in einer wachsenden Codebasis mit Dutzenden Endpunkten und Domänenobjekten entsteht ohne bewusste Architektur schnell Wildwuchs aus dupliziertem Validierungscode. Dieser Artikel zeigt konkrete Zod Schema Design Patterns für Wiederverwendung, discriminated Unions, rekursive Baumtypen, Transform-Pipelines und Branded Types, mit denen Validierungslogik genauso strukturiert wird wie jeder andere Teil der Anwendungsarchitektur.
-
Maxim Mironjuk
-
April 09, 2025
Das Holy Grail Layout aus Header, zwei Randspalten, Hauptbereich und Footer galt lange als eines der schwierigsten CSS Probleme überhaupt. Mit CSS Grid, template-areas, Gap und Subgrid lässt sich dasselbe Layout heute in wenigen, klar lesbaren Zeilen bauen, ganz ohne Float-Hacks, ohne Tabellen und ohne fragile absolute Positionierung.
-
Maxim Mironjuk
-
März 28, 2025
Wer in einem Composable mehrere watch, watchEffect und computed anlegt, muss beim Aufräumen jeden einzeln stoppen. Ein Effect Scope bündelt alle diese Effekte in einer Gruppe und beendet sie mit einem einzigen stop() Aufruf, ganz gleich ob innerhalb oder außerhalb einer Komponente.
-
Maxim Mironjuk
-
März 26, 2025
Wer in PHP Vererbungshierarchien mit Factory-Methoden oder ActiveRecord-Mustern baut, stößt unweigerlich auf den Unterschied zwischen self:: und static::. Late Static Binding löst genau das Problem, dass self:: immer an die Klasse gebunden bleibt, in der die Methode definiert wurde, statt an die Klasse, über die sie tatsächlich aufgerufen wurde.
-
Maxim Mironjuk
-
März 25, 2025
Warum kann ein Product-Objekt nicht direkt per Constructor injiziert werden — aber ein ProductRepository schon? Die Unterscheidung zwischen Injectable und Non-Injectable Objects ist fundamental für Magento 2 DI. Virtual Types lösen dazu ein häufiges di.xml-Problem elegant.
-
Maxim Mironjuk
-
März 19, 2025
Ein Audit Trail beantwortet die Frage, wer wann welchen Wert in welcher Zeile geaendert hat, und Anwendungslogs allein koennen diese Frage selten zuverlaessig beantworten. Dieser Beitrag zeigt drei etablierte Muster fuer Change-History-Tabellen in SQL, von Shadow Tables mit Triggern ueber eine zentrale Audit-Tabelle bis zu nativen System-Versioned Tables, inklusive Performance-Kosten und Aufbewahrungsstrategien.
-
Maxim Mironjuk
-
März 12, 2025
Symbol.iterator ist der bekannteste Vertreter der well-known Symbols, aber laengst nicht der einzige. Dieser Artikel zeigt im Detail, wie Symbol.toPrimitive, Symbol.hasInstance und Symbol.toStringTag das Verhalten eigener Objekte bei Typumwandlung, instanceof-Pruefungen und Debug-Ausgaben gezielt steuern, und wie eigene Symbole kollisionsfreie Objekt-Keys ermoeglichen.
-
Maxim Mironjuk
-
März 11, 2025
Die Wahl der richtigen CSS Methodik entscheidet über Wartbarkeit, Onboarding-Zeit und Refactoring-Aufwand eines Projekts über Jahre hinweg. BEM, Utility First und CSS Modules lösen dasselbe Grundproblem, nämlich Namenskollisionen und unkontrollierte Kaskade, mit fundamental unterschiedlichen Kompromissen bei Lesbarkeit, Build-Komplexität und Teamdisziplin.
-
Maxim Mironjuk
-
März 08, 2025
Design Tokens lösen ein Synchronisationsproblem, das jedes plattformübergreifende Produkt betrifft: Farben, Abstände und Typografie müssen in Web, iOS und Android identisch sein, ohne dass drei Teams denselben Wert manuell dreifach pflegen. Eine automatisierte Transformationspipeline macht aus einer einzigen JSON-Quelle konsistentes CSS, Swift und Kotlin, ohne Drift zwischen Plattformen.
-