課程簡介
本課程為期2天,從了解什么是重構(gòu)、單元測試;對人的要求和益處是什么、對產(chǎn)品的影響和結(jié)果怎么樣;到更重要怎么做重構(gòu)和單元測試。
目標(biāo)收益
學(xué)習(xí)結(jié)束后,學(xué)員對重構(gòu)和單元測試能建立正確、深入的觀點和理解,掌握重構(gòu)單元測試的基本實踐、要點、流行的工具和常見的誤解和錯誤的做法。
培訓(xùn)對象
軟件交付人員:開發(fā)工程師、測試工程師、項目經(jīng)理/交付經(jīng)理
課程大綱
重構(gòu)(一天) |
1. 能識別代碼中的壞味道 用團隊中的產(chǎn)品代碼做例子分析所出現(xiàn)的壞味道 結(jié)論討論和分析 總結(jié)、講解、概要分析所有種類的壞味道(21種) 結(jié)論討論和分析 2. 正確認(rèn)識和對待壞味道 3. 為什么需要重構(gòu)? 重構(gòu)的考慮、成本、粒度、頻率和方式 4. 學(xué)習(xí)重構(gòu)的原則和步驟 5. 學(xué)習(xí)正確的重構(gòu)步驟 6. 練習(xí)小規(guī)模重構(gòu)-如何重構(gòu)一個類 重構(gòu)的循環(huán) 【講座】識別類內(nèi)的壞味道 【講座】重構(gòu)的循環(huán) 【講座】什么時候算做完了? 【講座】在一個重構(gòu)之內(nèi) 【練習(xí)】小步前進-識別重構(gòu)常用的步驟 【練習(xí)】簡單設(shè)計-如何判斷簡單、你是怎么理解的 已知的Smells 【重構(gòu)】Extract Method/ Class / Subclass /Introduce Rename Method Introduce Assertion Duplicate Observer Date Replace Parameter with Method Preserve Whole Object Introduce Parameter Object 【講座&練習(xí)】注釋 【講座&練習(xí)】長方法 【講座&練習(xí)】大類 【講座&練習(xí)】長參數(shù)列表 【練習(xí)】測驗:Smells和重構(gòu) 【講座】Smells和重構(gòu) 命名 【重構(gòu)】 【講座&練習(xí)】在名字中嵌入了類型 【講座&練習(xí)】無法達意的名字 【講座&練習(xí)】不一致的名字 不必要的復(fù)雜性 【重構(gòu)】 【講座&練習(xí)】死代碼 【講座&練習(xí)】投機未來的可能性 【講座】成對出現(xiàn)的重構(gòu) 重復(fù) 【重構(gòu)】 【講座&練習(xí)】神奇數(shù)字 【講座&練習(xí)】重復(fù)的代碼 【講座&練習(xí)】可互換的類有不同的接口 條件邏輯 【重構(gòu)】 【講座&練習(xí)】空值檢測 【講座&練習(xí)】復(fù)雜的布爾表達式 【講座&練習(xí)】特殊處理的Case 【講座&練習(xí)】模擬的繼承 7. 練習(xí)較大規(guī)模重構(gòu)-多個類之間的重構(gòu) 描述數(shù)據(jù) 【講座&練習(xí)】主要的困擾 【講座&練習(xí)】數(shù)據(jù)類 【講座&練習(xí)】數(shù)據(jù)塊 【講座&練習(xí)】臨時字段 繼承 【講座&練習(xí)】子類拒絕來自父親的遺產(chǎn) 【講座&練習(xí)】不合適的親密關(guān)系(生成子類) 【講座&練習(xí)】Lazy Class 責(zé)任 【講座&練習(xí)】父類嫉妒子類的特性 【講座&練習(xí)】不合適的親密關(guān)系(提取父類) 【講座&練習(xí)】消息鏈 【講座&練習(xí)】中間人 適應(yīng)變化 【講座&練習(xí)】不同的變化動機 【講座&練習(xí)】散彈獵槍式的修改 【講座&練習(xí)】平行繼承結(jié)構(gòu) 用作公共庫的類 【講座&練習(xí)】不完整的庫類 |
單元測試(1天) |
單元測試入門: 1.【演示】用JUnit4進行單元測試-初步掌握用JUnit4進行單元測試的能力 2.【練習(xí)】如何按業(yè)務(wù)價值導(dǎo)向進行單元測試設(shè)計 樹立正確的單元測試認(rèn)識、概念和思路 Fixture組織 單元測試的力度 如何劃分單元測試 3.【討論&分析】為什么不寫單元測試 4.【討論&分析】誰該對(外部/內(nèi)部)質(zhì)量負(fù)責(zé) 5.【講座】什么不是單元測試 6.【講座】什么是單元測試 7.【講座】項目中單元測試策略 怎么寫單元測試 1.【講座】單元測試結(jié)構(gòu) 2.【講座】單元測試內(nèi)容 3.【練習(xí)】如何組織測試數(shù)據(jù) 4.【討論&分析】邊界條件 5.【練習(xí)】如何用Mock輔助邊界條件測試 單元測試重構(gòu) 1.【討論&分析】識別單元測試中的壞味道 2.【練習(xí)】重構(gòu)單元測試 單元測試和構(gòu)建流水線(bulid pipeline) 1.【討論&分析】單元測試在構(gòu)建流水線中的位置和作用 2.【講座&練習(xí)】用Buildr做Java項目構(gòu)建 3.【講座&練習(xí)】用Rake做Ruby項目構(gòu)建 4.【講座&練習(xí)】用Jenkins/Hudson做持續(xù)集成 |
重構(gòu)(一天) 1. 能識別代碼中的壞味道 用團隊中的產(chǎn)品代碼做例子分析所出現(xiàn)的壞味道 結(jié)論討論和分析 總結(jié)、講解、概要分析所有種類的壞味道(21種) 結(jié)論討論和分析 2. 正確認(rèn)識和對待壞味道 3. 為什么需要重構(gòu)? 重構(gòu)的考慮、成本、粒度、頻率和方式 4. 學(xué)習(xí)重構(gòu)的原則和步驟 5. 學(xué)習(xí)正確的重構(gòu)步驟 6. 練習(xí)小規(guī)模重構(gòu)-如何重構(gòu)一個類 重構(gòu)的循環(huán) 【講座】識別類內(nèi)的壞味道 【講座】重構(gòu)的循環(huán) 【講座】什么時候算做完了? 【講座】在一個重構(gòu)之內(nèi) 【練習(xí)】小步前進-識別重構(gòu)常用的步驟 【練習(xí)】簡單設(shè)計-如何判斷簡單、你是怎么理解的 已知的Smells 【重構(gòu)】Extract Method/ Class / Subclass /Introduce Rename Method Introduce Assertion Duplicate Observer Date Replace Parameter with Method Preserve Whole Object Introduce Parameter Object 【講座&練習(xí)】注釋 【講座&練習(xí)】長方法 【講座&練習(xí)】大類 【講座&練習(xí)】長參數(shù)列表 【練習(xí)】測驗:Smells和重構(gòu) 【講座】Smells和重構(gòu) 命名 【重構(gòu)】 【講座&練習(xí)】在名字中嵌入了類型 【講座&練習(xí)】無法達意的名字 【講座&練習(xí)】不一致的名字 不必要的復(fù)雜性 【重構(gòu)】 【講座&練習(xí)】死代碼 【講座&練習(xí)】投機未來的可能性 【講座】成對出現(xiàn)的重構(gòu) 重復(fù) 【重構(gòu)】 【講座&練習(xí)】神奇數(shù)字 【講座&練習(xí)】重復(fù)的代碼 【講座&練習(xí)】可互換的類有不同的接口 條件邏輯 【重構(gòu)】 【講座&練習(xí)】空值檢測 【講座&練習(xí)】復(fù)雜的布爾表達式 【講座&練習(xí)】特殊處理的Case 【講座&練習(xí)】模擬的繼承 7. 練習(xí)較大規(guī)模重構(gòu)-多個類之間的重構(gòu) 描述數(shù)據(jù) 【講座&練習(xí)】主要的困擾 【講座&練習(xí)】數(shù)據(jù)類 【講座&練習(xí)】數(shù)據(jù)塊 【講座&練習(xí)】臨時字段 繼承 【講座&練習(xí)】子類拒絕來自父親的遺產(chǎn) 【講座&練習(xí)】不合適的親密關(guān)系(生成子類) 【講座&練習(xí)】Lazy Class 責(zé)任 【講座&練習(xí)】父類嫉妒子類的特性 【講座&練習(xí)】不合適的親密關(guān)系(提取父類) 【講座&練習(xí)】消息鏈 【講座&練習(xí)】中間人 適應(yīng)變化 【講座&練習(xí)】不同的變化動機 【講座&練習(xí)】散彈獵槍式的修改 【講座&練習(xí)】平行繼承結(jié)構(gòu) 用作公共庫的類 【講座&練習(xí)】不完整的庫類 |
單元測試(1天) 單元測試入門: 1.【演示】用JUnit4進行單元測試-初步掌握用JUnit4進行單元測試的能力 2.【練習(xí)】如何按業(yè)務(wù)價值導(dǎo)向進行單元測試設(shè)計 樹立正確的單元測試認(rèn)識、概念和思路 Fixture組織 單元測試的力度 如何劃分單元測試 3.【討論&分析】為什么不寫單元測試 4.【討論&分析】誰該對(外部/內(nèi)部)質(zhì)量負(fù)責(zé) 5.【講座】什么不是單元測試 6.【講座】什么是單元測試 7.【講座】項目中單元測試策略 怎么寫單元測試 1.【講座】單元測試結(jié)構(gòu) 2.【講座】單元測試內(nèi)容 3.【練習(xí)】如何組織測試數(shù)據(jù) 4.【討論&分析】邊界條件 5.【練習(xí)】如何用Mock輔助邊界條件測試 單元測試重構(gòu) 1.【討論&分析】識別單元測試中的壞味道 2.【練習(xí)】重構(gòu)單元測試 單元測試和構(gòu)建流水線(bulid pipeline) 1.【討論&分析】單元測試在構(gòu)建流水線中的位置和作用 2.【講座&練習(xí)】用Buildr做Java項目構(gòu)建 3.【講座&練習(xí)】用Rake做Ruby項目構(gòu)建 4.【講座&練習(xí)】用Jenkins/Hudson做持續(xù)集成 |