版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 PHP和和JS的代碼組織的代碼組織2015-11-06目錄PHP和JS在公司已有項目中的作用面向過程和面向?qū)ο驪HP面向?qū)ο驪HP良好的代碼組織實踐JS函數(shù)式編程,閉包和面向?qū)ο罂偨Y(jié)PHP和JS在公司已有項目中的作用官網(wǎng)AOAB易寶C易火D?對象狂熱過程狂熱面向過程和面向?qū)ο竺嫦驅(qū)ο笈c面向過程在許多編程語言中只能使用二者之一來進行編程,但是PHP語言與其他編程語言有不同之處,那就是我們可以自由的選擇或者將PHP面向?qū)ο蠛蚉HP面向過程二者混用。 PHP的一些基礎(chǔ)開發(fā),PECLPECL和PEARPEAR都收到了很多贊揚和批評。這兩個項目為闡明PHP面向過程和面向?qū)ο缶幊痰膮^(qū)別提供了很好的例子。
2、The PHP Extension Community LibraryPHP 擴展模塊過程狂熱,最喜愛的編程語言是C和匯編,寫驅(qū)動程序,文件系統(tǒng)或其它的偏向底層的編程,他們的注意力集中于速度和代碼的精煉。PECl提供了PHP的擴展庫,用C和面向過程的方式開發(fā),注重速度和簡潔精煉。通常,這些都是從已經(jīng)存在的LGPL軟件中移植而來,其中許多有趣的特性已經(jīng)加入PHP。畢竟,PHP是用C寫的。(PhpMyAdmin)面向過程The PHP Extension and Application RepositoryPHP擴展與應用庫對象狂熱,在任何時候使用PHP面向?qū)ο蟮娘L格來書寫代碼。他們沒有真正考慮過
3、用這種方式是否會影響程序的執(zhí)行效率。PEAR則貢獻了很多有趣的類如建立Excel表或改變DNS記錄等。使用PEAR類庫可以為你節(jié)約大量時間。 (Smarty,ThinkPHP)面向?qū)ο驪HP面向?qū)ο笕筇卣?231.封裝就是把抽象出的數(shù)據(jù)和對數(shù)據(jù)的操作封裝在一起,數(shù)據(jù)被保護在內(nèi)部,程序的其它部 分只有通過被授權(quán)的操作(成員方法),才能對數(shù)據(jù)進行操作.2.繼承可以解決代碼復用,讓我們的 編 程 更 加 靠 近 人 類 思 維 .3.重載”是類的多態(tài)的一種實現(xiàn)。覆寫,子類可以把父類中繼承過來的方法進行重寫,便于擴展。, ,當系統(tǒng)各部分代碼緊密綁在一起時,就會產(chǎn)生密耦合,這時在一個組件中的變化會迫使
4、其他部分隨之改變。低耦合03內(nèi)聚是一個模塊內(nèi)部各成分之間相關(guān)聯(lián)程度的度量。低內(nèi)聚的代碼間關(guān)聯(lián)范圍廣,維護很困難。高內(nèi)聚02過程式代碼忙于處理細節(jié),而面向?qū)ο蟠a只需一個接口即可工作,并且不用考慮實現(xiàn)的細節(jié)。職責分明01正交指將職責相關(guān)的組件緊緊組合在一起,而與外部系統(tǒng)環(huán)境隔開保持獨立。正交04面向?qū)ο笤O(shè)計 MVC 企業(yè)模式數(shù)據(jù)映射.數(shù)據(jù)庫模式單例模式工廠方法模式抽象工廠模式生成對象的模式組合模式裝飾模式外觀模式組織對象和類的模式解釋器模式策略模式觀察者模式訪問者模式命令模式面向任務的模式設(shè)計模式 一、Duplicate Code(重復代碼)1、同一個類,兩個方法含有相同表達式。解決方法:你可以
5、Extract Method提煉重復代碼,然后讓這兩個方法都調(diào)用這個Extract Method。2、兩個類,有相似的方法。 解決方法:(1)把兩個類的方法提出來,共同構(gòu)造一個父類。 (2)把其中一個類的方法刪除,調(diào)用另一個類的方法?!薄癙HP良好的代碼組織實踐 二、Long Method(過長的函數(shù)方法)1、短函數(shù):代碼閱讀費點力氣,因為我們必須經(jīng)常轉(zhuǎn)換上下文去看看子程序做了什么。但是讓small method容易理解的真正關(guān)鍵在于一個好的名字。讀者可以通過名字了解函數(shù)的作用,根本不必去看其中寫了些什么。早期的編程語言中,調(diào)用方法需要額外開銷,這使得coder不愿意使用small metho
6、d。但是現(xiàn)代的OO語言幾乎已經(jīng)完全免除了process內(nèi)的額外開銷(函數(shù)調(diào)用)。 2、注釋地方提煉信號:每當感覺需要以注釋來說明點什么的時候,我們就把需要說明的東西寫進一個獨立函數(shù)中,并以其用途命名??梢詫σ唤M或甚至短短一行代碼做這件事。只要函數(shù)名稱能夠解釋其用戶,我們也該毫不猶豫地那么做?!薄癙HP良好的代碼組織實踐 動機 三、Large Class(萬能的類)1、Class內(nèi)數(shù)個屬性變量有相同前綴或者字尾,可使用Extract Class。 2、Class內(nèi)并非大多數(shù)變量使用屬性變量,可使用Extract Class。3、有太多代碼,可Extract Class?!薄癙HP良好的代碼組織實
7、踐四、Replace Temp with Query(查詢替換臨時變量)如果一個Temp變量,保存一個表達式,將這個表達式Extract Method。這就是所謂的查詢式,query”“PHP良好的代碼組織實踐 動機函數(shù)式編程讓JS更優(yōu)美 函數(shù)式編程只描述在程序輸入上執(zhí)行的操作,不必使用臨時變量保存中間結(jié)果。重點是捕捉 “是什么以及為什么”,而不是 “如何做”。與將重點放在執(zhí)行連續(xù)命令上的過程性編程相比,函數(shù)式編程的重點是函數(shù)的定義而不是狀態(tài)機(state machine)的實現(xiàn)。 函數(shù)式編程概念,包括匿名函數(shù)、調(diào)用函數(shù)的不同方法,以及將函數(shù)作為參數(shù)傳遞給其他函數(shù)的方式。在許多情況下,Java
8、Script 的重復代碼導致了一些拙劣的編碼。如果使用函數(shù)式編程,就可以避免這些問題。此外,可以利用函數(shù)式編程風格編寫更加優(yōu)美的回調(diào)。下一代編程閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)閉包是Javascript語言的一個難點,也是它的特色,很多高級應用都要依靠閉包實現(xiàn)。要理解閉包,首先必須理解Javascript特殊的變量作用域。變量的作用域無非就是兩種:全局變量和局部變量。Javascript語言的特殊之處,就在于函數(shù)內(nèi)部可以直接讀取全局變量。另一方面,在函數(shù)外部自然無法讀取函數(shù)內(nèi)的局部變量。理解并用好閉包(closure)1 12 2閉包的用途使用閉包的注意點1)由于閉包會使得函數(shù)中的變量都
9、被保存在內(nèi)存中,內(nèi)存消耗很大,所以不能濫用閉包,否則會造成網(wǎng)頁的性能問題,在IE中可能導致內(nèi)存泄露。解決方法是,在退出函數(shù)之前,將不使用的局部變量全部刪除。2)閉包會在父函數(shù)外部,改變父函數(shù)內(nèi)部變量的值。所以,如果你把父函數(shù)當作對象(object)使用,把閉包當作它的公用方法(Public Method),把內(nèi)部變量當作它的私有屬性(private value),這時一定要小心,不要隨便改變父函數(shù)內(nèi)部變量的值?!啊盝S的面向?qū)ο竺嫦驅(qū)ο蟮恼Z言有一個標志,即擁有類的概念,抽象實例對象的公共屬性與方法,基于類可以創(chuàng)建任意多個實例對象,一般具有封裝、繼承、多態(tài)的特性!但JS中對象與純面向?qū)ο笳Z言中的對象是不同的,ECMA標準定義JS中對象:無序?qū)傩缘募希鋵傩钥梢园局?、對象或者函?shù)??梢院唵卫斫鉃镴S的對象是一組無序的值,其中的屬性或方法都有一個名字,根據(jù)這個名字可以訪問相映射的值(值可以是基本值/對象/方法)。Lorem ipsum dolor consectetur adipisicing do eiusmod tempor incididunt labore olore magna aliqua dolor adipisicing dodo eiusmod tempor incicic didunt labore ipsum dolor .創(chuàng)建對象對象繼
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年-2024年公司項目部負責人安全教育培訓試題附答案【黃金題型】
- 立秋文化在新媒體的傳播
- 《材料工程原理緒論》課件
- 《監(jiān)督培訓材料》課件
- 激光打標機打標軟件與PLC通信穩(wěn)定性的研究
- 部編版七年級歷史下冊期末復習專題課件2024版
- 云安全隱私保護機制-洞察分析
- 營養(yǎng)產(chǎn)業(yè)可持續(xù)發(fā)展-洞察分析
- 外觀模式可維護性-洞察分析
- 稀有金屬國際市場動態(tài)-洞察分析
- 【8地星球期末】安徽省合肥市包河區(qū)智育聯(lián)盟校2023-2024學年八年級上學期期末地理試題(含解析)
- 2024-2025學年冀人版科學四年級上冊期末測試卷(含答案)
- 【8物(科)期末】合肥市廬陽區(qū)2023-2024學年八年級上學期期末質(zhì)量檢測物理試卷
- 國家安全知識教育
- 2024-2030年中國停車場建設(shè)行業(yè)發(fā)展趨勢投資策略研究報告
- 藍軍戰(zhàn)略課件
- 物業(yè)管理重難點分析及解決措施
- 北京郵電大學《數(shù)據(jù)庫系統(tǒng)》2022-2023學年第一學期期末試卷
- 【MOOC】信號與系統(tǒng)-北京郵電大學 中國大學慕課MOOC答案
- 湖北省黃岡市2023-2024學年高一上學期期末考試化學試題(含答案)
- 中國HDMI高清線行業(yè)市場動態(tài)分析及未來趨勢研判報告
評論
0/150
提交評論