なぜ独自のフレームワークを作成する必要があるのでしょうか?

WBOY
リリース: 2016-06-23 13:12:09
オリジナル
787 人が閲覧しました

プログラミングのフレームワークは、直接使う→捨てる→回収する

フレームワーク(フレームワーク)とは、複雑な問題を解決したり、対処したりするために使用される基本的な概念的構造です。この広義の定義は、特にソフトウェアの概念において非常に一般的です。フレームは機械構造にも使用できます。

実際、はっきり言って他人が作ったホイールを使うのが枠組みです。ソフトウェア開発では、command+C/command+V です。

まず自己紹介をさせてください。私は情報管理を専攻する大学生です。専攻から、将来誰もが話題になるプログラマーであることがわかります。 Yangshasha はいくつかのコードを書き、いくつかの主流のフレームワークを使用しました。そして今、私はあなたと共有するいくつかの経験を持っています。

プログラマーとして、新しいテクノロジーを学ぶのはとても楽しいことです。それに伴う疑問は、どうすればその言語を早く習得できるかということです。テクノロジーの経験を持つ多くの人は口を揃えて、「他の人がすでに構築したホイールを使用すると、より多くの労力を節約できます。私も昔はその一人でした。私も多くのフレームワーク (JS を含む) を使用するのが好きです。」 jQuery、Express、socket.io .js など。PHP には phpword、Yii、laravel が含まれます。HTML には bootstrap、boocss、normal が含まれます。かつては、短期間でこれほどの高みに到達することができ、とてもうれしかったです。開発されたコンテンツは、学内アプリケーションのニーズも完全に満たしています。他人から見れば私は「達人」になった。

しかし、事態は予想通りには発展しませんでした。フレームワークを長期間使用した後、私は問題を発見しました。「私はそれを本当に勉強したのだろうか?」私が学んだ内容は本当に役に立ちますか? このフレームワーク内の内容は将来役立つでしょうか? もちろん、このアイデアは 1 日にして形成されたものではありません。

有名な Yii フレームワークと同様に、PHP を使用して Web アプリケーションを開発する場合、Web ページにはコピーして貼り付けるためのコードがたくさんあり、それを使用するのはとても楽しいですし、Bootstrap も短時間でプロジェクトを開発できます。短期間で私を助けてくれました。短期間で私はまともなウェブサイトを作成し、キャンパス内の組織のソフトウェア開発部門の責任者になりました。しかし、開発体験を教えていたある日、みんなの前で見せる必要があるクラスを書くために本当に落ち着いたとき、私はこれまで非常に多くのフレームワークを使用していましたが、非常に多くの人々の前でそれが必要であることに気づきました。正しいクラスを書くことはほぼ不可能です。 !実行中、ここに問題があるか、エラーが発生しています。以前は、それを使用する方法と他の人のコードを統合する方法だけを考えていたことがわかりましたが、最も本質的なこと、つまり作成を忘れていました。私はプログラムする能力をほとんど失い、コンピューターの前でコードをコピーする人になりました。

その結果は悔しいものでした。私はその日、この質問について考えていました。「将来何ができるだろうか?」コードの模写者であり続けるか、それとも元気を出してこれらのフレームワークの背後にあるものを見てみましょう。

そこで、私はソース コードを見始めました。ブートストラップを開いて、Yii フレームワークのベンダー フォルダーを開いて、jquery を開いて、カプセル化されたブラック ボックスを開いて、これらのフレームワークの背後にある知恵を理解しようとしました。

CSS としての Bootstrap は理解できますが、他の大きなフレームワークのコードは、ほとんど人間の手が届かない、乗り越えられない山です。諦めて、謎の箱には触らずに使い続けるべきでしょうか?

答えは明らかにこれではありません。映画「The Martian」の最後に、それをよく表している一文があります。諦めてあきらめるか、努力を続けてすべてを解決するかのどちらかです。

それから、よくお昼寝しました!はは、冗談だよ、違うよ!朝起きて水を飲んで走りに行き、すぐに仕事に戻って本を読み始めました。そして、まだ理解できないことに気づきました!どうしよう、えっ!理解できないけど、自分なりのフレームワーク理解に基づいてフレームワークは書ける!そこで、すぐに作業を開始しました。Google で調べてみたところ、うまくいかないことがわかりました。どうすればよいでしょうか。賢い私は、フレームワーク全体を書かなくても、いくつかの関数を書いても問題ないとすぐに考え、最初のフレームワーク拡張機能である DbFactory.php ファイルを作成しました。

DbFactory.php[1]

DbFactory.php[2]

DbFactory.php[3]

とても基本的なものですが、ついに何かを作り始めたのでとても興奮しています、データベースに接続し、いくつかのメソッドをカプセル化しましたが、これはマスターに非常に近いと感じます。毎日少しずつですが、それでもやらなければなりません(笑)

実際にコードを改善し始めると、時間が経つにつれてより多くの知識を習得し、突然悟るでしょう。ここで、開発における量的な変化が質的な変化につながります。

この文書を書いたとき、私はとても興奮してすぐに共有しました。結果は何も起こらず、世界は依然として同じであり、私はよりハンサムになっていません。つまり、私は少ししか進歩していません。マスターへの道、あるいは、少しだけ知識が増えただけで、まったく進歩がありません。そこで、私は新たな学習を始めて、たくさんの本を読みました。ある日、Yii フレームワークを再度開いて、当時は理解するのが難しそうに見えたコードを見て、次のことを発見しました。実際に、それがどのように機能するのか、そして全体的なアーキテクチャはわかりました!これを発見したとき、私は非常に興奮していました。そして、独自のフレームワークを書き始めてみようではないかというアイデアが思いつきました。私は仕事を始めたばかりで、ルーティング、モデル クラス、コントロール クラス、いくつかの基本的なメソッドを含む基本的なクラスとコードの作成を完了するのに 1 日かかりました。すべてがカプセル化されているので、とても素晴らしいと感じました。完璧に!準備ができたと思ったので、プッシュしました (追記: 自動の require は追加されず、各ファイルの先頭に追加されただけです)。テストを繰り返した結果、ここにもバグがあることがわかりました。はい! Require は絶対パスを使用しないと単純に使いにくく、フレームワーク全体が混乱しており、まったく使いにくく、スケーラビリティもほとんどありません。どうしたの!本当のひらめきは、最近 Yii フレームワークのソース コードを開いて自動ロードを見たときでした。実際、ファイルは必要に応じて自動的にロードでき、もちろん、この記事ではこの問題のみを列挙します。実際、問題はそれだけではありません。このフレームワークを作成することで、これまで誤解されていた多くのことが正しくなりました。

下の写真は、私の現在のフレームワークのアーキテクチャです。コードが多すぎるので省略します。

今日のフレームワーク図.png

次の作業は、フレームワークをより充実させることです。正直に言うと、それらと比較することはできません。一方、構造、考え方という点では、彼らは主流の枠組みをまとめた真のマスターです。しかし、これを通じて、私は少なくとも自分の考え方を持ち、自分の創造性を見つけ、自分自身を本当の達人に少し近づけることができました。このような進歩は刺激的だと言わざるを得ません。下の写真は、今朝始めたばかりの js フレームワークです。

js フレームワーク

最後に、私が考える利点について話させてください: 1. 全体的なアーキテクチャについて考える 2. 自分自身の創造性を向上させる 3. 独立して考える能力を向上させる 4. 他の人の意見を読む能力を向上させるコード 5. 私はプログラミング言語の多くの組み込み関数を使用し、理解しました

これが私の小さな提案です: あなたが会社にいるなら、たくさんのビジネスがあり、実現する必要があるはずです。あなたが学生の場合は、幸いにも勉強する時間がたくさんあるので、今すぐキーボードで書き始めてください。どんなに難しくても、時間が経つにつれて、自分の全体的な考え方がどんどん明確になっていくことに気づくでしょう。

人生は無限で、プログラミングは無限です。私はプログラミングが好きで、役に立つものをプログラミングした後の達成感があるので、同じような考えの人がいる場合は、プロフィールにアクセスして、私を見つけてください。それは真実の愛に違いありません、ありがとう!

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!