自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

為什么我要寫自己的框架?

開發(fā) 架構(gòu)
如果是在公司,肯定有大量的業(yè)務(wù)和需求需要實(shí)現(xiàn),那就直接拿來(lái)用,如果你是學(xué)生,那你很幸運(yùn),你有大量的時(shí)間學(xué)習(xí),那就從現(xiàn)在開始動(dòng)起你的鍵盤開始編寫吧!無(wú)論多么困難,時(shí)間長(zhǎng)了你就會(huì)發(fā)現(xiàn),對(duì)整體的思考就越來(lái)越清晰,明確了!

我覺得編程的框架應(yīng)該分為:直接用->拋棄->重拾

框架(framework)是一個(gè)基本概念上的結(jié)構(gòu),用于去解決或者處理復(fù)雜的問題。這個(gè)廣泛的定義使用的十分流行,尤其在軟件概念??蚣芤材苡糜跈C(jī)械結(jié)構(gòu)。

其實(shí)說白了框架就是使用別人造好的輪子。在軟件開發(fā)里面就是command+C/command+V。

先自我介紹一下,我是一名信管專業(yè)的大學(xué)生,從我的專業(yè)可以看出我就是以后大家嘴里的程序員。洋洋灑灑寫了一些代碼,用了一些主流的框架,現(xiàn)在有一些體會(huì)分享給大家。

作為一個(gè)程序員學(xué)習(xí)一門新技術(shù)是讓人感到興奮的,隨之而來(lái)的問題就是如何快速的掌握語(yǔ)言吶?很多技術(shù)的過來(lái)人都不約而同的說:用別人已經(jīng)造好的輪子 唄,你看,多省力,在很久以前我也是他們的一員,也喜歡使用大量的框架(js有jQuery、Express、socket.io.js等;PHP有 phpword、Yii、laravel;html里面有Bootstrap、bootcss、normal)。曾幾何時(shí),我覺得很興奮,在如此短的時(shí)間內(nèi)就可以做到這樣的高度,讓我十分的開心。開發(fā)出的內(nèi)容也完全符合校內(nèi)應(yīng)用的需求。我變成了一個(gè)別人眼中的“大師”。

但事情并沒有往想象的地方發(fā)展。框架用的時(shí)間久了之后就發(fā)現(xiàn)了一個(gè)問題:我真的有學(xué)習(xí)過嗎?我學(xué)的內(nèi)容真的有用嘛,這些框架內(nèi)的東西能對(duì)我今后有幫助嗎,當(dāng)然,這種想法不是一天形成的,還有一個(gè)小的故事。

在使用PHP開發(fā)網(wǎng)頁(yè)應(yīng)用的時(shí)候,作為著名的Yii框架,網(wǎng)頁(yè)有大量代碼可以供我復(fù)制黏貼,我用的很爽,能在短時(shí)間內(nèi)開發(fā)出項(xiàng) 目,bootstrap也可以幫助我在短時(shí)間內(nèi)拼接出一個(gè)像樣的網(wǎng)站,也當(dāng)上了校內(nèi)某組織軟件開發(fā)部的負(fù)責(zé)人。但當(dāng)有一天在講授開發(fā)經(jīng)驗(yàn)的時(shí)候,當(dāng)我當(dāng)著 大家的面真的靜下心來(lái)寫我需要展示的一個(gè)類的時(shí)候,以前用了這么多的框架,我發(fā)現(xiàn)在這么多人面前的我已經(jīng)幾乎寫不出來(lái)一個(gè)正確的類了??!運(yùn)行的時(shí)候不是這 邊有問題就是那邊出現(xiàn)了錯(cuò)誤。原來(lái)在以前我只想著如何使用它,如何整合別人的代碼,卻忘了一個(gè)最最本真的東西:創(chuàng)造!我?guī)缀跏チ司幊痰哪芰?,變成了電腦 面前的代碼復(fù)制員。

結(jié)果是令人沮喪的,當(dāng)天我都在思考這個(gè)問題:我今后到底能干嘛?是繼續(xù)做一個(gè)代碼復(fù)制員,還是打起精神,看看這些框架的背后有什么內(nèi)容吧!

于是我就投入了看源碼的行列:我打開了bootstrap,打開了Yii框架的vender文件夾,打開了jquery,試圖去打開那個(gè)封裝起來(lái)的黑盒子,了解這些框架背后的智慧。

結(jié)局可想而知,作為css的bootstrap還可以理解,但是其他大型框架的代碼幾乎就是一座不可逾越的大山,讓人望塵莫及。難道就這樣放棄,繼續(xù)用下去,不觸碰那個(gè)永遠(yuǎn)神秘的盒子了嗎?

答案顯然不是這個(gè),電影《火星救援》的***有一句話說的很好:
你要么認(rèn)命放棄,要么繼續(xù)投入工作,把它們都解決了。

然后我就睡了一覺!哈哈開個(gè)玩笑啦,沒有!我清醒了,喝了口水,跑了個(gè)步,馬上投入了工作,開始閱讀!然后發(fā)現(xiàn)我還是看不懂它!怎么辦吶,誒!我看 不懂,我可以按照自己對(duì)框架的理解編寫一個(gè)框架呀!于是我馬上投入了工作,大量的Google之后發(fā)現(xiàn)行不通,怎么辦!聰明的我馬上想到我不編寫整個(gè)框 架,那我寫部分功能也是可以的呀,于是就有了我的***個(gè)框架的擴(kuò)展:DbFactory.php文件。

我很興奮,因?yàn)槲医K于開始創(chuàng)造點(diǎn)東西出來(lái)了,雖然他很基本,連接了數(shù)據(jù)庫(kù),封裝了幾個(gè)方法,但是我覺得這距離大師又近了那么一丟丟,每天都是一丟丟,那我還得了哈哈!

當(dāng)你真正的開始想讓你的代碼變的更好,你會(huì)去掌握和了解到更加多的知識(shí),時(shí)間久了以后會(huì)在有一天瞬間茅塞頓開。
這就是開發(fā)里的量變引起質(zhì)變。

當(dāng)寫出這個(gè)文件的時(shí)候,我是很興奮的,馬上分享了出去,結(jié)果就是啥都沒有發(fā)生,世界還是那樣,我也沒有變帥,說明我在成為大師的路上只進(jìn)步了一點(diǎn) 點(diǎn),或者干脆沒有進(jìn)步,只是知道的多了點(diǎn)。于是我又開始新的一輪學(xué)習(xí),看大量的書籍,有一天我重新打開Yii框架在我當(dāng)時(shí)看起來(lái)很難理解的代碼的時(shí)候我發(fā) 現(xiàn):我居然有點(diǎn)明白它的工作原理,知道整體的架構(gòu)了!

這個(gè)發(fā)現(xiàn)了這個(gè)的我很興奮,一個(gè)想法油然而生:為何我不開始編寫自己的框架吶!

說干就干,花了一天的時(shí)間就完成了基礎(chǔ)類和代碼的編寫,包括路由、模型類、控制類、一些基本的方法都封裝在里面,我覺得自己簡(jiǎn)直太厲害了,居然在我 看來(lái)可以***的運(yùn)行!我覺得已經(jīng)可以了,于是就把它推了上去(ps:沒有加上自動(dòng)require,只是在每個(gè)文件的最上面加上了),在不斷的測(cè)試之后就發(fā) 現(xiàn),這邊有bug,那邊也有!require不使用絕對(duì)路徑簡(jiǎn)直難用,整個(gè)框架想一盤散沙,一點(diǎn)都不好用,可擴(kuò)展性幾乎沒有,我又陷入了沉思。錯(cuò)在哪里 了!

真正的頓悟是在最近一次打開Yii框架源碼,看到了autoload之后頓悟:其實(shí)可以根據(jù)需求自動(dòng)加載文件,很多問題也就解決了,當(dāng)然,這篇文章也就列舉這一個(gè)問題,其實(shí)我碰到的問題不止這些,很多以前理解錯(cuò)誤的地方也隨著編寫這個(gè)框架變的正確了✅。

下圖是我現(xiàn)在框架的架構(gòu)。代碼太多,就不做展示了。

之后的工作就是讓框架更加的豐滿,不敢說比得上一些主流的框架,說實(shí)話根本不能夠和他們相比,無(wú)論從結(jié)構(gòu)、思考還是思考上,編出主流框架的他們才是 真正的大師。但我通過這個(gè)至少有了自己的思考,尋找回了自己的創(chuàng)造力,讓自己距離真正的大師進(jìn)了一點(diǎn),不得不說這種進(jìn)步是讓人興奮的。下圖是我早上剛剛啟 動(dòng)的js框架。

***說一下我認(rèn)為的好處:
1、對(duì)整體架構(gòu)的思考
2、提高自己的創(chuàng)造力
3、提高自己獨(dú)立思考的能力
4、提高自己閱讀別人代碼的能力
5、用到和認(rèn)識(shí)了大量的編程語(yǔ)言內(nèi)置函數(shù)

下面是我的一點(diǎn)小建議:如果是在公司,肯定有大量的業(yè)務(wù)和需求需要實(shí)現(xiàn),那就直接拿來(lái)用,如果你是學(xué)生,那你很幸運(yùn),你有大量的時(shí)間學(xué)習(xí),那就從現(xiàn)在開始動(dòng)起你的鍵盤開始編寫吧!無(wú)論多么困難,時(shí)間長(zhǎng)了你就會(huì)發(fā)現(xiàn),對(duì)整體的思考就越來(lái)越清晰,明確了!

 

責(zé)任編輯:王雪燕 來(lái)源: merjiezo
相關(guān)推薦

2014-07-09 10:56:44

.NET框架

2013-09-30 10:16:32

博客技術(shù)人員

2015-12-28 10:35:59

碼農(nóng)寫作

2015-08-10 13:25:38

編程寫作

2019-12-27 14:47:06

Python編程語(yǔ)言

2012-09-26 10:02:44

框架開發(fā)項(xiàng)目

2012-02-28 09:11:51

語(yǔ)言Lua

2020-07-17 14:06:36

Scrum敏捷團(tuán)隊(duì)

2012-04-04 22:07:12

Android

2020-08-14 09:11:29

RedisQPS數(shù)據(jù)庫(kù)

2015-08-13 13:24:53

Google重組

2023-03-09 08:23:07

序列化?接口方法

2024-03-25 02:00:00

Vite開發(fā)

2025-02-24 10:36:15

2013-10-22 15:18:19

2014-01-09 09:24:40

2020-05-13 09:03:14

Python開發(fā)代碼

2019-08-28 10:53:35

JavaScriptOptional Ch代碼

2021-04-12 05:58:43

進(jìn)程內(nèi)核機(jī)制

2012-06-18 14:51:09

Python
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)