為什么使用框架 使用框架的優(yōu)缺點(diǎn)
更新時(shí)間:2012年09月27日 16:22:07 作者:
我們是由于效率和易用性的考慮才產(chǎn)生框架??蚣苣芄?jié)省開(kāi)發(fā)時(shí)間。框架強(qiáng)制使用公共的約定,因此它能有效地解決一些共有的問(wèn)題,比如頁(yè)面渲染,assert判斷,安全或者應(yīng)用配置等
正文開(kāi)始
我們是由于效率和易用性的考慮才產(chǎn)生框架??蚣苣芄?jié)省開(kāi)發(fā)時(shí)間??蚣軓?qiáng)制使用公共的約定,因此它能有效地解決一些共有的問(wèn)題,比如頁(yè)面渲染,assert判斷,安全或者應(yīng)用配置等。這些共有的問(wèn)題有個(gè)共通的特性是會(huì)在每個(gè)web應(yīng)用上都用到。
框架是非常好的,它能讓決定更連貫??蚣苣鼙苊馕覀儗?xiě)一大堆自定義模塊來(lái)實(shí)現(xiàn)這些性能,我們所需要做的就是將這些共用模塊放在框架中實(shí)現(xiàn)??蚣芄?jié)省了我們不少的時(shí)間和精力,并且讓擴(kuò)展變得更容易。但是這也是問(wèn)題的根本所在。
由于框架能在我們做代碼決策的時(shí)候提供很多的幫助,因此我們就變得懶了起來(lái)。我們不去考慮如何使用抽象思維搭建一個(gè)干凈清晰的系統(tǒng),不去考慮最后的代碼是否干凈清晰,卻依賴著框架來(lái)替我們實(shí)現(xiàn)這些需求。
對(duì)錘子來(lái)說(shuō),所有事物都是釘子
Abraham Kaplan說(shuō)過(guò)的一句話能最好地控訴工具的缺點(diǎn):把錘子給一個(gè)小孩,他會(huì)用錘子槌遇到的所有事物
當(dāng)把這個(gè)道理用在框架上的時(shí)候,我們就是工具確定的犧牲者。當(dāng)我們遇到需求不是很符合框架,我們就會(huì)犯懶。我們就會(huì)按照框架既定的方法來(lái)解決我們的問(wèn)題。因?yàn)槭褂每蚣芗榷ǖ姆椒▉?lái)解決方法是最簡(jiǎn)單的,這時(shí)候我們已經(jīng)忽略了如何設(shè)計(jì)對(duì)未來(lái)擴(kuò)展等需求最好的代碼了。
這就是衡量你是否更職業(yè)的時(shí)候了,交付對(duì)未來(lái)擴(kuò)展最好的代碼而不是交付最容易實(shí)現(xiàn)的代碼。是為了以后的需求更好的設(shè)計(jì)你的代碼還是讓以后的人做需求的時(shí)候再考慮,這就是程序員的責(zé)任感問(wèn)題了。作為一個(gè)更職業(yè)的開(kāi)發(fā)者,我們必須不依賴框架獨(dú)立思考。
這就是你的錯(cuò)
是不是經(jīng)常聽(tīng)到某人在抱怨某個(gè)框架?我已經(jīng)聽(tīng)見(jiàn)好多人抱怨過(guò)Rails了:“Rails應(yīng)用總是糟糕的結(jié)構(gòu)”或者“Rails測(cè)試總是這么慢”。最開(kāi)始,我也曾經(jīng)這么認(rèn)為。但是現(xiàn)在,每當(dāng)我聽(tīng)到這些抱怨的時(shí)候,我就會(huì)意識(shí)到其實(shí)抱怨者是懶惰的。Rails,或者其他框架,只是一個(gè)工具而已,你要做的是控制它。把壞代碼歸咎于無(wú)生命的框架只能說(shuō)明你的不專業(yè)。
選擇正確的工具,或者正確地使用工具
使用框架開(kāi)發(fā)也是在寫(xiě)代碼。作為一個(gè)開(kāi)發(fā)者,你有權(quán)利選擇如何實(shí)現(xiàn)需求。人們都希望能開(kāi)發(fā)出干凈整潔的代碼,那樣的話使用面向?qū)ο笏枷牒秃侠淼某橄缶褪欠浅V匾牧恕R_(kāi)發(fā)出好的代碼,我們必須仔細(xì)考慮我們的代碼設(shè)計(jì),特別是當(dāng)使用框架的時(shí)候。
決定變得更專業(yè)
我們必須根據(jù)基本的需求來(lái)選擇工具??蚣艽_實(shí)能做很多事情,并且需求會(huì)決定整個(gè)代碼結(jié)構(gòu)。有的時(shí)候框架會(huì)很適合某個(gè)需求。但是當(dāng)框架不適合某些需求的時(shí)候,你就有責(zé)任為了代碼的清晰和干凈修改框架或者封裝框架。
作者
Myles Megyesi
正文結(jié)束
讀后感
文章中提到框架只是一個(gè)工具,你不能用這個(gè)工具來(lái)滿足你的所有需求,當(dāng)框架無(wú)法清晰完整地滿足你的需求的時(shí)候,你要做的不是寫(xiě)一大堆垃圾麻煩的代碼來(lái)實(shí)現(xiàn)需求,更不是修改你的需求來(lái)滿足更容易實(shí)現(xiàn)這件事。作為更專業(yè)的你,你需要修改框架,或者使用抽象等思維來(lái)使你的代碼達(dá)到清晰干凈。
這點(diǎn)在實(shí)際開(kāi)發(fā)中會(huì)遇到非常多。當(dāng)別人問(wèn)你:這里的代碼為什么這么寫(xiě)? 如果你的回答是:沒(méi)辦法啊,因?yàn)榭蚣苁沁@么這么做的,我只能這么這么做。這就說(shuō)明了你已經(jīng)被框架束縛住了。不要認(rèn)為框架是權(quán)威,框架也是別人寫(xiě)的,它寫(xiě)的時(shí)候不會(huì)考慮到你的需求。只要你的需求是團(tuán)隊(duì)的公共需求,需要修改,增加框架的時(shí)候,你就應(yīng)該修改框架。
選擇框架和使用框架是控制框架的基礎(chǔ)。什么需求,什么規(guī)模使用什么框架,選擇好框架后就要熟練使用熟悉框架。當(dāng)框架無(wú)法滿足需求的時(shí)候,要毫不猶豫拋棄或者修改框架。
代碼是讓人更清晰自然的閱讀和開(kāi)發(fā)的,如果被一個(gè)框架捆綁住,實(shí)際上就是本末倒置了。
我們是由于效率和易用性的考慮才產(chǎn)生框架??蚣苣芄?jié)省開(kāi)發(fā)時(shí)間??蚣軓?qiáng)制使用公共的約定,因此它能有效地解決一些共有的問(wèn)題,比如頁(yè)面渲染,assert判斷,安全或者應(yīng)用配置等。這些共有的問(wèn)題有個(gè)共通的特性是會(huì)在每個(gè)web應(yīng)用上都用到。
框架是非常好的,它能讓決定更連貫??蚣苣鼙苊馕覀儗?xiě)一大堆自定義模塊來(lái)實(shí)現(xiàn)這些性能,我們所需要做的就是將這些共用模塊放在框架中實(shí)現(xiàn)??蚣芄?jié)省了我們不少的時(shí)間和精力,并且讓擴(kuò)展變得更容易。但是這也是問(wèn)題的根本所在。
由于框架能在我們做代碼決策的時(shí)候提供很多的幫助,因此我們就變得懶了起來(lái)。我們不去考慮如何使用抽象思維搭建一個(gè)干凈清晰的系統(tǒng),不去考慮最后的代碼是否干凈清晰,卻依賴著框架來(lái)替我們實(shí)現(xiàn)這些需求。
對(duì)錘子來(lái)說(shuō),所有事物都是釘子
Abraham Kaplan說(shuō)過(guò)的一句話能最好地控訴工具的缺點(diǎn):把錘子給一個(gè)小孩,他會(huì)用錘子槌遇到的所有事物
當(dāng)把這個(gè)道理用在框架上的時(shí)候,我們就是工具確定的犧牲者。當(dāng)我們遇到需求不是很符合框架,我們就會(huì)犯懶。我們就會(huì)按照框架既定的方法來(lái)解決我們的問(wèn)題。因?yàn)槭褂每蚣芗榷ǖ姆椒▉?lái)解決方法是最簡(jiǎn)單的,這時(shí)候我們已經(jīng)忽略了如何設(shè)計(jì)對(duì)未來(lái)擴(kuò)展等需求最好的代碼了。
這就是衡量你是否更職業(yè)的時(shí)候了,交付對(duì)未來(lái)擴(kuò)展最好的代碼而不是交付最容易實(shí)現(xiàn)的代碼。是為了以后的需求更好的設(shè)計(jì)你的代碼還是讓以后的人做需求的時(shí)候再考慮,這就是程序員的責(zé)任感問(wèn)題了。作為一個(gè)更職業(yè)的開(kāi)發(fā)者,我們必須不依賴框架獨(dú)立思考。
這就是你的錯(cuò)
是不是經(jīng)常聽(tīng)到某人在抱怨某個(gè)框架?我已經(jīng)聽(tīng)見(jiàn)好多人抱怨過(guò)Rails了:“Rails應(yīng)用總是糟糕的結(jié)構(gòu)”或者“Rails測(cè)試總是這么慢”。最開(kāi)始,我也曾經(jīng)這么認(rèn)為。但是現(xiàn)在,每當(dāng)我聽(tīng)到這些抱怨的時(shí)候,我就會(huì)意識(shí)到其實(shí)抱怨者是懶惰的。Rails,或者其他框架,只是一個(gè)工具而已,你要做的是控制它。把壞代碼歸咎于無(wú)生命的框架只能說(shuō)明你的不專業(yè)。
選擇正確的工具,或者正確地使用工具
使用框架開(kāi)發(fā)也是在寫(xiě)代碼。作為一個(gè)開(kāi)發(fā)者,你有權(quán)利選擇如何實(shí)現(xiàn)需求。人們都希望能開(kāi)發(fā)出干凈整潔的代碼,那樣的話使用面向?qū)ο笏枷牒秃侠淼某橄缶褪欠浅V匾牧恕R_(kāi)發(fā)出好的代碼,我們必須仔細(xì)考慮我們的代碼設(shè)計(jì),特別是當(dāng)使用框架的時(shí)候。
決定變得更專業(yè)
我們必須根據(jù)基本的需求來(lái)選擇工具??蚣艽_實(shí)能做很多事情,并且需求會(huì)決定整個(gè)代碼結(jié)構(gòu)。有的時(shí)候框架會(huì)很適合某個(gè)需求。但是當(dāng)框架不適合某些需求的時(shí)候,你就有責(zé)任為了代碼的清晰和干凈修改框架或者封裝框架。
作者
Myles Megyesi
正文結(jié)束
讀后感
文章中提到框架只是一個(gè)工具,你不能用這個(gè)工具來(lái)滿足你的所有需求,當(dāng)框架無(wú)法清晰完整地滿足你的需求的時(shí)候,你要做的不是寫(xiě)一大堆垃圾麻煩的代碼來(lái)實(shí)現(xiàn)需求,更不是修改你的需求來(lái)滿足更容易實(shí)現(xiàn)這件事。作為更專業(yè)的你,你需要修改框架,或者使用抽象等思維來(lái)使你的代碼達(dá)到清晰干凈。
這點(diǎn)在實(shí)際開(kāi)發(fā)中會(huì)遇到非常多。當(dāng)別人問(wèn)你:這里的代碼為什么這么寫(xiě)? 如果你的回答是:沒(méi)辦法啊,因?yàn)榭蚣苁沁@么這么做的,我只能這么這么做。這就說(shuō)明了你已經(jīng)被框架束縛住了。不要認(rèn)為框架是權(quán)威,框架也是別人寫(xiě)的,它寫(xiě)的時(shí)候不會(huì)考慮到你的需求。只要你的需求是團(tuán)隊(duì)的公共需求,需要修改,增加框架的時(shí)候,你就應(yīng)該修改框架。
選擇框架和使用框架是控制框架的基礎(chǔ)。什么需求,什么規(guī)模使用什么框架,選擇好框架后就要熟練使用熟悉框架。當(dāng)框架無(wú)法滿足需求的時(shí)候,要毫不猶豫拋棄或者修改框架。
代碼是讓人更清晰自然的閱讀和開(kāi)發(fā)的,如果被一個(gè)框架捆綁住,實(shí)際上就是本末倒置了。
相關(guān)文章
解決安裝vs2019后原vs2017項(xiàng)目無(wú)法編譯各種報(bào)錯(cuò)的問(wèn)題
這篇文章主要介紹了解決安裝vs2019后原vs2017項(xiàng)目無(wú)法編譯各種報(bào)錯(cuò)的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08解決idea打開(kāi)窗口/tab過(guò)多導(dǎo)致隱藏的問(wèn)題
這篇文章主要介紹了解決idea打開(kāi)窗口/tab過(guò)多導(dǎo)致隱藏的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11瀏覽器緩存知識(shí)小結(jié)及應(yīng)用分析
了解瀏覽器的緩存命中原理,是開(kāi)發(fā)web應(yīng)用的基礎(chǔ),本文著眼于此,學(xué)習(xí)瀏覽器緩存的相關(guān)知識(shí),總結(jié)緩存避免和緩存管理的方法,結(jié)合具體的場(chǎng)景說(shuō)明緩存的相關(guān)問(wèn)題。希望能對(duì)有需要的人有所幫助2017-03-03Git基礎(chǔ)學(xué)習(xí)之文件刪除操作命令詳解
這篇文章主要為大家詳細(xì)介紹了Git基礎(chǔ)學(xué)習(xí)中的文件刪除操作命令,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解一下2022-10-10Alfred?+?Gitee搭建免費(fèi)圖床的使用實(shí)例詳解
這篇文章主要為大家介紹了Alfred?+?Gitee搭建免費(fèi)圖床的使用實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01