課程簡(jiǎn)介
就像修煉武學(xué)一般,編碼的技能同樣需要修行,只有掌握更多編碼技能與設(shè)計(jì)技能的程序員才能在程序世界走得更遠(yuǎn),攀得更高。掌握必備的設(shè)計(jì)技能,就好像是武者修行的洗髓煉氣,決定了未來(lái)內(nèi)力的強(qiáng)大;扎實(shí)的編碼功底,則是修煉外功,打磨的是筋骨皮;至于開(kāi)發(fā)工具、測(cè)試驅(qū)動(dòng)、重構(gòu)等諸多技能,則是編碼武者掌握的招式,若能熟練掌握,就能一擊制敵,讓那些糟糕代碼無(wú)容身之地。
故而,程序員能力的提升,就是編碼武者的修行。
目標(biāo)收益
培訓(xùn)對(duì)象
課程大綱
洗髓篇 設(shè)計(jì)心法 |
縱觀軟件開(kāi)發(fā)的歷史,其間經(jīng)歷了過(guò)程式設(shè)計(jì)、面向?qū)ο笤O(shè)計(jì)(函數(shù)式編程)、面向組件設(shè)計(jì)、面向服務(wù)設(shè)計(jì),然而無(wú)論是以什么內(nèi)容作為驅(qū)動(dòng)設(shè)計(jì)的要素,都離不開(kāi)設(shè)計(jì)的本原——“高內(nèi)聚松耦合”。 這六字真言道盡了軟件設(shè)計(jì)的終極目標(biāo):我們希望設(shè)計(jì)出來(lái)的實(shí)體(函數(shù)、類、模塊、子系統(tǒng))可以重用,支持?jǐn)U展,如此才能提高編碼效率、減少系統(tǒng)缺陷,同時(shí)還能面對(duì)需求的變化。 高內(nèi)聚,意味著程序的職責(zé)分配合理,不會(huì)將相關(guān)的邏輯分散到各處,且又定義了合理的邊界,只暴露需要進(jìn)行協(xié)作的接口;于是又引入了松耦合,使得實(shí)體之間明斷實(shí)連,相依而不相存,可以獨(dú)立變化,卻又相互協(xié)作。 在本章,我將從多個(gè)角度來(lái)闡釋、剖析這六字真言: 高內(nèi)聚松耦合 設(shè)計(jì)的起點(diǎn) 重復(fù)謎題 對(duì)象的合理封裝 自治對(duì)象 1、高內(nèi)聚松耦合 內(nèi)聚性 耦合性 2、對(duì)象的合理封裝 案例分析:報(bào)表系統(tǒng)之參數(shù)處理 3、繼承與委派的區(qū)別 案例分析:兩種分離方案的對(duì)比 4、多態(tài)與抽象設(shè)計(jì)的起點(diǎn) 5、重復(fù)謎題 5.1業(yè)務(wù)邏輯的重復(fù) 案例分析:日志系統(tǒng)的組合子設(shè)計(jì) 案例分析:業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫(kù)訪問(wèn)與事務(wù)處理,采用兩種不同方式對(duì)其進(jìn)行重構(gòu),重構(gòu)的結(jié)果是一個(gè)初步簡(jiǎn)略的框架。 5.2程序結(jié)構(gòu)的重復(fù) 案例分析:對(duì)集合的操作,運(yùn)用函數(shù)式編程思想消除重復(fù)。 |
易筋篇 整潔之道 |
武功修行,內(nèi)外兼修才是王道。軟件設(shè)計(jì)同樣如此,不能只煉心法(設(shè)計(jì)),而缺少對(duì)身體(代碼)的錘煉。二者(設(shè)計(jì)與代碼)并非完全割裂的關(guān)系,而是相輔相成,甚至內(nèi)外相通的關(guān)系。好的設(shè)計(jì)可以在一定程度上保證好的編碼,而把握好整潔代碼的特征,培養(yǎng)編碼的Sense,則有助于改進(jìn)設(shè)計(jì)的質(zhì)量。 那么什么才是整潔代碼呢?本章會(huì)對(duì)此展開(kāi)探討,以期端正編碼者的態(tài)度,培養(yǎng)良好編碼習(xí)慣,打磨編碼技能。 簡(jiǎn)單設(shè)計(jì) Kent Beck提出了“簡(jiǎn)單設(shè)計(jì)的概念”,內(nèi)容為: 通過(guò)所有測(cè)試(Passes its tests) 盡可能消除重復(fù) (Minimizes duplication) 盡可能清晰表達(dá) (Maximizes clarity) 更少代碼元素 (Has fewer elements) 以上四個(gè)原則的重要程度依次降低。 案例:結(jié)合簡(jiǎn)單設(shè)計(jì)理解郵件轉(zhuǎn)發(fā)器的設(shè)計(jì) |
負(fù)重修行 |
外功修煉就是要負(fù)重而行。在這條修行道路上,我們需要突破如下內(nèi)容的桎梏: 名:提高可讀性的一方面 形:提高可讀性的一方面 函數(shù):構(gòu)成程序的最重要元素 1、可讀性:命名\表達(dá)式\合理的分段\DSL 案例分析:若干代碼片段,多數(shù)來(lái)自于真實(shí)項(xiàng)目的丑陋代碼,演示如何提高這些代碼的可讀性,使得代碼結(jié)構(gòu)更加清晰。 2、整潔的函數(shù) 案例分析:Fitness代碼分析 3、異常處理 案例分析:版本升級(jí)管理系統(tǒng)的異常處理 4、重構(gòu) 案例實(shí)踐: 影片租賃系統(tǒng) 分布式系統(tǒng)消息處理的測(cè)試 JBehave測(cè)試用例 |
綜合思考 |
如何制定重構(gòu)策略 Code Review 案例:我在客戶處做的代碼診所 |
洗髓篇 設(shè)計(jì)心法 縱觀軟件開(kāi)發(fā)的歷史,其間經(jīng)歷了過(guò)程式設(shè)計(jì)、面向?qū)ο笤O(shè)計(jì)(函數(shù)式編程)、面向組件設(shè)計(jì)、面向服務(wù)設(shè)計(jì),然而無(wú)論是以什么內(nèi)容作為驅(qū)動(dòng)設(shè)計(jì)的要素,都離不開(kāi)設(shè)計(jì)的本原——“高內(nèi)聚松耦合”。 這六字真言道盡了軟件設(shè)計(jì)的終極目標(biāo):我們希望設(shè)計(jì)出來(lái)的實(shí)體(函數(shù)、類、模塊、子系統(tǒng))可以重用,支持?jǐn)U展,如此才能提高編碼效率、減少系統(tǒng)缺陷,同時(shí)還能面對(duì)需求的變化。 高內(nèi)聚,意味著程序的職責(zé)分配合理,不會(huì)將相關(guān)的邏輯分散到各處,且又定義了合理的邊界,只暴露需要進(jìn)行協(xié)作的接口;于是又引入了松耦合,使得實(shí)體之間明斷實(shí)連,相依而不相存,可以獨(dú)立變化,卻又相互協(xié)作。 在本章,我將從多個(gè)角度來(lái)闡釋、剖析這六字真言: 高內(nèi)聚松耦合 設(shè)計(jì)的起點(diǎn) 重復(fù)謎題 對(duì)象的合理封裝 自治對(duì)象 1、高內(nèi)聚松耦合 內(nèi)聚性 耦合性 2、對(duì)象的合理封裝 案例分析:報(bào)表系統(tǒng)之參數(shù)處理 3、繼承與委派的區(qū)別 案例分析:兩種分離方案的對(duì)比 4、多態(tài)與抽象設(shè)計(jì)的起點(diǎn) 5、重復(fù)謎題 5.1業(yè)務(wù)邏輯的重復(fù) 案例分析:日志系統(tǒng)的組合子設(shè)計(jì) 案例分析:業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫(kù)訪問(wèn)與事務(wù)處理,采用兩種不同方式對(duì)其進(jìn)行重構(gòu),重構(gòu)的結(jié)果是一個(gè)初步簡(jiǎn)略的框架。 5.2程序結(jié)構(gòu)的重復(fù) 案例分析:對(duì)集合的操作,運(yùn)用函數(shù)式編程思想消除重復(fù)。 |
易筋篇 整潔之道 武功修行,內(nèi)外兼修才是王道。軟件設(shè)計(jì)同樣如此,不能只煉心法(設(shè)計(jì)),而缺少對(duì)身體(代碼)的錘煉。二者(設(shè)計(jì)與代碼)并非完全割裂的關(guān)系,而是相輔相成,甚至內(nèi)外相通的關(guān)系。好的設(shè)計(jì)可以在一定程度上保證好的編碼,而把握好整潔代碼的特征,培養(yǎng)編碼的Sense,則有助于改進(jìn)設(shè)計(jì)的質(zhì)量。 那么什么才是整潔代碼呢?本章會(huì)對(duì)此展開(kāi)探討,以期端正編碼者的態(tài)度,培養(yǎng)良好編碼習(xí)慣,打磨編碼技能。 簡(jiǎn)單設(shè)計(jì) Kent Beck提出了“簡(jiǎn)單設(shè)計(jì)的概念”,內(nèi)容為: 通過(guò)所有測(cè)試(Passes its tests) 盡可能消除重復(fù) (Minimizes duplication) 盡可能清晰表達(dá) (Maximizes clarity) 更少代碼元素 (Has fewer elements) 以上四個(gè)原則的重要程度依次降低。 案例:結(jié)合簡(jiǎn)單設(shè)計(jì)理解郵件轉(zhuǎn)發(fā)器的設(shè)計(jì) |
負(fù)重修行 外功修煉就是要負(fù)重而行。在這條修行道路上,我們需要突破如下內(nèi)容的桎梏: 名:提高可讀性的一方面 形:提高可讀性的一方面 函數(shù):構(gòu)成程序的最重要元素 1、可讀性:命名\表達(dá)式\合理的分段\DSL 案例分析:若干代碼片段,多數(shù)來(lái)自于真實(shí)項(xiàng)目的丑陋代碼,演示如何提高這些代碼的可讀性,使得代碼結(jié)構(gòu)更加清晰。 2、整潔的函數(shù) 案例分析:Fitness代碼分析 3、異常處理 案例分析:版本升級(jí)管理系統(tǒng)的異常處理 4、重構(gòu) 案例實(shí)踐: 影片租賃系統(tǒng) 分布式系統(tǒng)消息處理的測(cè)試 JBehave測(cè)試用例 |
綜合思考 如何制定重構(gòu)策略 Code Review 案例:我在客戶處做的代碼診所 |