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