ホームページ >バックエンド開発 >PHPチュートリアル >書評:PHPの実用的な設計パターン
PHPにおけるブランドンサベージの実用的なデザインパターンのこのレビューには、本と自己出版の側面の両方に関する私自身の意見と印象が含まれます。レビューコピーを教えてくれたブランドンに感謝します。
設計パターンは、一般的な問題に対する一般的な解決策に関するものです。
キーテイクアウト
…それらは概念であり、青写真ではありません。アイデア、完成したデザインではありません。
…そうでなければ困難な状況に明確さを加えます。
- ブランドンサベージ、PHP
(要約)工場パターン
パターン、それぞれがよく説明され、ほとんどの場合、潜在的な実装を示すコード例が続きますが、キャッシュの工場パターンの例を不満があります。 パターンは、さまざまなキャッシュ(APCとMemcache)の例で実現され、両方とも工場を介して生成され、キャッシュコンポーネントが必要なサービスに注入されます。
それは私には理にかなっていますが、なぜ実際に工場のステップを必要とするのかと疑問に思う経験の少ない人々を見ることができます。また、単にコンストラクターにキャッシュインターフェイス自体をヒントするのではなく、キャッシュオブジェクト自体を注入する必要があります。工場ではありません。現在の例は、工場インターフェイスとキャッシュインターフェイスの両方を備えており、少なくとも、1つは余剰のようです。これは、中間レベルの開発者が親しみやすい方法で説明されることはありませんでした。また、ブリッジパターンの説明にも満足していません。表面に傷がついただけで、適切に戻らないように、欠けているように見えました。 一方、私は複合パターンの説明と非常に興味深いツリーの例に関するデモンストレーションを絶対に愛していました。著者は、メニュー構造、階層表現などに幻想的に適用される任意の数のネストノードレベルを持つ複合ツリーを構築します。 - そして、私は特にデコレーターのパターンの説明に興奮していました。それは非常に親しみやすい方法で、そして良い、使いやすい例で行われました。特にこのパターンは、私が常に尋ねられたときに突然人々に説明するのに苦労していたものであり、私はこの本よりもまだより良い故障を見つけていません。モデルの無視本のある例では、ブランドンは、モデルはすべてのビジネスロジックと検証コードを含むMVCアプリケーションの最も重いリフターであると言います。これは、私が受け入れるにはあまりにも絶対的すぎる声明です。頭の上部から、これが真実ではない例を考えることができます:laravel。 Laravel 5が出てフォームリクエストを追加すると、モデルはさらに軽くなります。
「優れたモデルの作成は、開発者がタックルする最も複雑なタスクの1つです。 長い間、Zend Frameworkのドキュメントは、モデルを作成することがアプリケーション開発プロセスの大部分であるため、Zend_Modelクラスはないと判断しました。 zend_modelを作成することは、誰もが同じモデル構造を使用できるか、使用したいと思うかを想定することです。これは、この章にコードを含めていないのと同じ理由で不可能です。 これは理にかなっていますが、最も単純なマナーで値、ゲートウェイ、ストレージオブジェクトを例示することは、初めてドメインモデルパターンに紹介される人々にとって非常に有益でした。私の意見では、ドメインモデルのパターンは、この本ではあまりにも無視されており、あまりにも理論的でした。
知識の呪い
本を通して、ブランドンは、読者がすべてに精通していると仮定して、それにリンクせずに、高度な概念(ORM、継承、依存関係注入)およびサードパーティのコンテンツに言及しています。特に4人のギャングは何度か言及されており、少なくともデザインパターンへのリンクを使用できます。そうでない場合は、「初心者」と「上級初心者」の読者は、混乱の中で文を一目見ます。
他の場合には、段落構造は、初心者から中級ユーザーの理解レベルをはるかに超えて書かれています。それは古い質問です多くの開発者は常に苦労しています。依存関係を反転させ、クラス内にオブジェクトを作成しないように取り組んでいる場合、実行時間中に必要な依存関係を作成するにはどうすればよいですか'必然的に注入されますか?
これは、この本がパターンに慣れるために必要な読者が消耗するレベルではありません。この文を完全に理解している読者は、本のすべてのパターンにすでに完全に精通している可能性が高いため、実際のターゲットオーディエンスに疑問を投げかけています。これは、「知識の呪い」として知られているものに苦しんでいるサベージ氏によるものだと思います。
ウィキペディアはそれをそのように定義しています:
知識の呪いは、情報に基づいた政党の観点から問題について考えることが非常に難しいと判断するために、より詳細な知識のあるパーティーを導く認知的バイアスです。
知識の呪いは、彼らが知っていることを渡すように正式に訓練されていないが、時間、経験、フィードバックとともに効果を失うものでもある専門家の非常に一般的な出来事です。これが、私たちがSetePointで私たちの投稿について正直なフィードバックを提供するように奨励する理由であり、新しい出版物ごとに物事をよりシンプルで合理化しようとする理由です。誰も呪いに免疫がありません - 一部はそれによってより影響を受けます。
自己出版の疫病
近年、自己出版は本当に離陸したようです。 Brandonがこの本で行ったように、Leanpubに頼らない人は完全にソロになります。このアプローチは確かにプロセスをスピードアップし、専門家が驚くほど急速なペースで興味のあるパーティーの手に質の高いコンテンツを入れることができますが、より多くの間違い、悪いコンテンツ、タイプミスをすり抜けることもできます。
ネイティブスピーカーは間違いを犯さず、したがって正式な編集を必要としないと考えています。たとえば、Yベースの会社は、国Xの誰かを雇うためにX言語バージョンのサイトを校正しています。校正者が言語Xのネイティブスピーカーであることの唯一の根拠。それは私の母国語であるにもかかわらず、あなたのクロアチア語のウェブサイトの校正を校正するために私を雇いたくありませんが、あなたはより良い英語を見つけるのは難しいでしょう言語編集者。
上級ユーザーとして、私は本で説明されているすべてのパターンではないにしても、ほとんどのほとんどの知識を持っていました。しかし、私が経験した説明は、私の意見では、より低いスキルの1つではありませんが、中間ユーザーにとってはよく形成され、親しみやすいものでした。この本の内容は非常に優れており、ブランドンは理論が説明していることをコードで示すのに優れていますが、私はこの本全体が初心者の開発者が具体的なものを何でも得るにはあまりにも複雑すぎると感じています。
PHPコミュニティ全般は、私には絶対的な初心者の本がある「ミッシングリンク」症候群のようなものに苦しんでいるようです(「これはエコーです、これは機能です、これはPHPタグです」)そして、このような中間の本、またはスタージョン、ジョーンズ、ハルジェスなどが出したものはありますが、質の高いコンテンツを欠いたままで、古き良き「古き良き」を介して征服できる中間地があります。火」アプローチ。あなたがあなたの周りに立っている人々がそれらについて話しているが、あなたが何かを理解していない会議で、あなたがパターンに入り、それらの厄介なうなずきからパターンに入ろうとしている中間開発者であるならば、それは言った。あなたが初心者なら、私はあなたがこれを購入することをお勧めすることはできません - まだではありません。最初に「echos」をマスターし、作曲家が何であるかを学び、次に歯をこれに沈めてください。
実際には、あなたが上級初心者である場合(初心者は非常に基本的に始めるべきです)、それでもパターンに興味がある場合、私はあなたに称賛し、この本に飛び込む前に次のリソースを提供します:>
学習可能なオブジェクト指向PHPの要素PHPのデザインパターンは、ソフトウェア設計で一般的に発生する問題に対する再利用可能なソリューションを提供します。彼らはあなたのコードの効率と保守性を改善する方法を提供します。デザインパターンを使用することにより、コードをより柔軟で再利用可能、理解しやすくすることができます。また、特定のソリューションに標準の用語を提供するため、開発者間の通信を容易にします。これらのオブジェクトを特別なラッパーオブジェクトに配置することにより、オブジェクトに新しい動作を動的に追加します。 PHPでは、これは元のクラスをラップして追加の機能を提供するデコレータークラスを作成することで実現できます。デコレータークラスは、元のクラスと同じインターフェイスを実装し、そのインスタンスを保持します。デコレータへのすべての呼び出しは元のクラスに転送され、追加の動作が追加されます。
本「PHPの実用的なデザインパターン」は、デザインパターンの理解にどのように役立ちますか? 」は、PHPの設計パターンを理解および実装するための包括的なガイドを提供します。さまざまなデザインパターンの実用的な例と詳細な説明を提供するため、読者が概念を把握し、自分のプロジェクトに適用しやすくなります。
いいえ、設計パターンはPHP専用ではありません。これらは、オブジェクト指向のプログラミング言語に適用できるソフトウェア設計のコンセプトです。実装は言語ごとに異なる場合がありますが、根本的な原則は同じままです。
デザインパターンを使用することに欠点はありますか? 、適切に使用しないと複雑さを導入することもできます。デザインパターンの過剰使用は、不必要な抽象化につながる可能性があり、コードの理解と維持をより困難にすることができます。したがって、それらを慎重に使用し、繰り返しの問題を真に解決した場合にのみそれらを使用することが重要です。 PHPプロジェクトは、解決しようとしている問題を理解し、設計パターンが解決できる繰り返しの問題であるかどうかを特定することです。適切なデザインパターンを特定したら、コードに実装を開始できます。目標は、コードをより効率的かつ保守可能にすることであるため、常にシンプルさと明確さを念頭に置いてください。
以上が書評:PHPの実用的な設計パターンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。