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