Diese Überprüfung der praktischen Designmuster von Brandon Savage in PHP umfasst meine eigenen Meinungen und Impressionen sowohl über das Buch als auch den Aspekt der Selbstveröffentlichung. Vielen Dank an Brandon, dass Sie mir ein Bewertungskopie gegeben haben.
InKonstruktionsmustern handelt es sich um häufige Lösungen für häufige Probleme.
… Es sind Konzepte, keine Blaupausen; Ideen, keine fertigen Designs.
… Sie verleihen einer ansonsten schwierigen Situation Klarheit.
- Brandon Savage, praktische Designmuster in PHP
Beginnend mit einem leichteren, einführenden Hinweis erklärt Brandon die Notwendigkeit von Frameworks, argumentiert, dass OOP nicht nur in den Klassen einwickelt und detailliert darüber geht, warum Designmuster schwierig zu lernen scheinen. Anschließend setzt er eine milde Einführung in feste Prinzipien fort und legt die Grundlage für fortgeschrittenere Konzepte. Er erklärt, warum jede solide Regel wichtig ist und was sie bedeutet. Angesichts der Tatsache, dass Solid ein gut etabliertes Software -Design -Prinzip ist, ist es nur natürlich, es mit jedem Muster zu vergleichen, das im Buch erklärt werden soll. Oder genauer gesagt, um zu beurteilen, wie gut jedes Muster die soliden Prinzipien respektiert und dem Entwickler seine beabsichtigte Funktionalität ermöglicht.
Wenn ich Angelegenheiten in der Dreyfus -Model -Terminologie zum Ausdruck bringen, behauptet er, dass das Buch da ist, um einen Anfänger in einen kompetenten Entwickler zu verwandeln, ohne sie weiteren Fehlern an Anfängern zu unterziehen, wenn tatsächlich ein solcher Lernansatz nicht möglich ist - das ist - das ist - das ist - das ist - das ist. Nur nicht wie der Prozess des menschlichen Wissens funktioniert.
Da es aus der TOC möglicherweise nicht übermäßig offensichtlich ist, sind die in diesem Buch erläuterten Muster in der Reihenfolge:
Mit so vielen gedeckten Mustern (und den meisten gut abgedeckt) war ich überrascht, einen Satz wie „ […] zum Beispiel das Registrierungsmuster (nicht in diesem Buch behandelt)… “. Warum nicht? Das Registrierungsmuster ist ein beliebtes Muster und sehr einfach zu erklären, auch wenn es heutzutage nicht genau empfohlen wird.
Muster nach Muster wird jeder gut erklärt, und die meisten folgen Code -Beispiele, die ihre potenzielle Implementierung demonstrieren, obwohl ich mit dem Fabrikmuster -Beispiel mit dem Cache einen Überfall habe.
Das Muster wird in einem Beispiel für verschiedene Caches realisiert - APC und Memcache - und beide werden durch eine Fabrik hervorgebracht, die in den Diensten injiziert wird, welcher Dienst eine Cache -Komponente benötigt.
Es macht für mich Sinn, aber ich kann weniger erfahrene Leute sehen, die sich fragen, warum man den Werksschritt tatsächlich überhaupt braucht, und nicht einfach einen Hinweis auf die Cache -Schnittstelle selbst im Konstruktor, die die Injektion des Cache -Objekts selbst erfordert. und nicht seine Fabrik. Das aktuelle Beispiel enthält sowohl eine Fabrikoberfläche als auch eine Cache -Schnittstelle und zumindest scheint man einen Überschuss zu sein. Dies wurde nie auf mittelgroße Entwickler der mittelgroßen Ebene erklärt, und ich befürchte, dass es für einige verwirrend sein könnte. Ich bin auch weniger als zufrieden mit der Erklärung des Brückenmusters - es schien es zu fehlen, als wäre es nur an der Oberfläche zerkratzt worden, um niemals richtig zurückzukehren.
Andererseits habe ich die Erklärung des zusammengesetzten Musters und seine Demonstration an sehr interessanten Baumbeispielen absolut geliebt - der Autor baut einen zusammengesetzten Baum mit einer willkürlichen Anzahl verschachtelter Knoteneben - und ich war besonders begeistert von der Erklärung des Dekorationsmusters. Es wurde sehr zugänglich und auf gute, verwendbare Beispiele geschehen. Insbesondere dieses Muster war eines, das ich immer Schwierigkeiten hatte, Menschen aus heiterem Himmel zu erklären, als ich gefragt wurde, und ich habe noch keinen besseren Zusammenbruch als in diesem Buch gefunden.
In einer Instanz des Buches sagt Brandon, dass Modelle die schwersten Lifter einer MVC -Anwendung sind, die alle Geschäftslogik- und Validierungscode enthalten. Dies ist eine Aussage, die viel zu absolut für mich ist, um es zu akzeptieren - von der Spitze meines Kopfes kann ich mir ein Beispiel vorstellen, bei dem dies nicht wahr ist: Laravel. Wenn Laravel 5 herauskommt und Formularanfragen hinzufügt, werden die Modelle noch leichter wachsen.
Zugegeben, einige Menschen neigen dazu, alles und das Spülen in die Modelle zu stecken, aber es gibt Menschen, die auch die gleiche Menge an Godcode in Controller einfügen. Meine Erfahrung und Präferenz sagen, dass alles, was mit Framework bezogen wurde , solange sie zwischen Frameworks interoperabel sind. Das ist jedoch persönliche Präferenz, nehme ich an. Eine andere Sache hat mich jedoch seltsam gemacht:
“ gute Modelle erstellen ist eine der kompliziertesten Aufgaben, die jeder Entwickler anschließt. In der Dokumentation von Zend Framework war es für eine lange Zeit festgestellt, dass es keine Zend_Model -Klasse gab, da das Erstellen eines Modells der Großteil eines Anwendungsentwicklungsprozesses ist. Um ein Zend_Model zu erstellen, würde man davon ausgehen
Während dies sinnvoll ist, wäre es unglaublich vorteilhaft gewesen, dass die Wert-, Gateway- und Speicherobjekte im einfachsten Manieren zum ersten Mal unglaublich vorteilhaft gewesen sind. Das Domänenmodellmuster war meiner Meinung nach in diesem Buch zu vernachlässigt und viel zu theoretisch.
Der Fluch des Wissens
In anderen Fällen wird die Absatzstruktur auf eine Weise geschrieben, die weit über das Verständnis für einen Anfänger bis zum Zwischenbenutzer hinaus geht:
Es ist eine uralte Frage, mit der viele Entwickler immer zu kämpfen haben: Wenn ich daran arbeite, meine Abhängigkeiten umzukehren und keine Objekte in meinen Klassen zu erstellen 'T notwendigerweise injiziert werden?
Dies ist nicht auf einem Niveau, das vom Leser konsumiert werden kann, der dieses Buch benötigen würde, um sich mit den Mustern vertraut zu machen. Der Leser, der diesen Satz in vollem Umfang versteht, ist mit allen Mustern des Buches wahrscheinlich bereits voll vertraut und stellt so die eigentliche Zielgruppe in Frage. Ich glaube, dies ist darauf zurückzuführen, dass Herr Savage unter dem, was als „Fluch des Wissens“ bezeichnet wird, leidet.
wikipedia definiert es als solche:
Der Fluch des Wissens ist eine kognitive Tendenz, die besser informierte Parteien dazu führt, dass es äußerst schwierig ist, aus der Perspektive weniger informierter Parteien über Probleme nachzudenken.
Der Fluch des Wissens ist ein sehr häufiges Ereignis bei Fachleuten, die nicht formell geschult sind, um das weiterzugeben, was sie wissen, aber auch etwas, das mit Zeit, Erfahrung und Feedback den Effekt verliert. Dies ist auch der Grund, warum wir bei SitePoint die Menschen ermutigen, uns ehrliches Feedback zu unseren Beiträgen zu geben, und der Grund, warum wir versuchen, die Dinge mit jeder neuen Veröffentlichung einfacher und besser gestoppt zu machen. Niemand ist immun gegen den Fluch - einige sind nur mehr davon betroffen.
In den letzten Jahren scheint sich die Selbstverlagsscheibe wirklich geschafft zu haben. Diejenigen, die nicht auf Leanpub zurückgreifen, gehen vollständig Solo, wie es Brandon mit diesem Buch getan hat. Während dieser Ansatz den Prozess tatsächlich beschleunigt und es Experten ermöglicht, qualitativ hochwertige Inhalte in alarmierend schnellem Tempo in die Hände interessierter Parteien zu stecken, ermöglicht er auch mehr Fehler, schlechte Inhalte und Tippfehler.
Die meisten Probleme, die andere Selbstveröffentlichungsautoren plagen, plagen dieses Buch leider auch. Ohne einen erfahrenen Redakteur scheint es keine Anleitung zu Inhalten, Form oder sogar grammatikalischen und syntaktischen Genauigkeit gegeben zu haben - etwas, das Menschen, die in einer Sprache beheimatet sind, oft durcheinander gebracht.
Ich denke, dass Muttersprachler keine Fehler machen und daher keine formelle Bearbeitung benötigen, um beispielsweise ein in Y ansässiges Unternehmen zu vergleich zu Das einzige Gründe, dass der Korrektor als Muttersprachler von Sprache X ist. Sie möchten mich wirklich nicht einstellen, um Ihre kroatische Version einer Website zu korrigieren, obwohl es meine Muttersprache ist, aber es fällt Ihnen schwer, ein besseres Englisch zu finden Sprache Herausgeber.
Als erweiterter Benutzer hatte ich frühere Kenntnisse über die meisten, wenn nicht alle Muster, die im Buch erklärt wurden. Die Erklärungen, die ich durchgemacht habe, waren jedoch gut geformt und für einen Zwischenbenutzer zugänglich - obwohl meiner Meinung nach nicht zu einer geringeren Fähigkeiten. Während der Inhalt des Buches sehr gut ist und Brandon hervorragend in Code demonstrieren kann, was die Theorie beschreibt, bin ich der Meinung, dass das Buch als Ganzes viel zu komplex ist, als dass der Neuling Entwickler etwas Greifbares herausholen kann.
Die PHP -Community im Allgemeinen, wie es mir scheint, leidet an einer Art „fehlender Link“ -Syndrom, bei dem wir die absoluten Anfängerbücher haben („Dies ist Echo, dies ist eine Funktion, dies ist ein PHP -Tag“) und die Zwischenbücher wie diese oder alles, was Stör, Jones, Hartjes und andere herausgegeben haben Der Feueransatz “.
, dass Sie ein Zwischenentwickler sind, der in Muster einsteigen möchte, und aus diesen unangenehmen Nicken auf Konferenzen, in denen Menschen, die um Sie herum stehen, über sie sprechen, aber nichts verstehen, nichts bekommen - erhalten Sie dieses Buch auf jeden Fall. Wenn Sie ein Neuling sind, kann ich Ihnen nicht empfehlen, dies zu kaufen - noch nicht. Beherrschen Sie zuerst Ihre „Echos“, lernen Sie, was der Komponist ist, und versenken Sie Ihre Zähne in diesen.
In der Tat, wenn Sie ein fortgeschrittener Anfänger sind (Anfänger sollten bei den Grundlagen beginnen), der dennoch an Mustern interessiert ist, applaudiere ich Ihnen und biete die folgenden Ressourcen an, bevor Sie in dieses Buch eintauchen:
Wie können Entwurfsmuster die Kommunikation zwischen Entwicklern verbessern? . Wenn Entwickler diese Begriffe verwenden, vermitteln sie ein spezifisches, gut verstandenes Konzept, das Missverständnisse reduziert und die Kommunikation verbessert. Sie können auch Komplexität einführen, wenn sie nicht ordnungsgemäß verwendet werden. Überbeanspruchung von Entwurfsmustern kann zu unnötiger Abstraktion führen und den Code schwieriger zu verstehen und zu warten. Daher ist es wichtig, sie mit Bedacht zu verwenden und nur dann, wenn sie ein wiederkehrendes Problem wirklich lösen. Ihre PHP -Projekte sind es, das Problem zu verstehen, das Sie zu lösen versuchen, und festzustellen, ob es sich um ein wiederkehrendes Problem handelt, das ein Designmuster lösen kann. Sobald Sie ein geeignetes Designmuster identifiziert haben, können Sie es in Ihrem Code implementieren. Denken Sie daran, das Ziel ist es, Ihren Code effizienter und aufrechterhalten zu gestalten. Behalten Sie also immer Einfachheit und Klarheit im Auge.
Das obige ist der detaillierte Inhalt vonBuchbesprechung: Praktische Designmuster in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!