架構(gòu)師
互聯(lián)網(wǎng)
推薦課程
average > 0 ? $model->average . '分' : '10.0分' ?>

軟件重構(gòu)實(shí)戰(zhàn)訓(xùn)練營

劉捷

咨詢公司 曾任職BEA(中國)資深軟件架構(gòu)師

曾任職BEA(中國)資深軟件架構(gòu)師,十余年的企業(yè)軟件架構(gòu)、開發(fā)和管理經(jīng)驗(yàn), 側(cè)重于企業(yè)應(yīng)用軟件架構(gòu)設(shè)計.主要負(fù)責(zé)客戶大型項目的架構(gòu)設(shè)計和研發(fā)。
作為技術(shù)專家保證項目的成功實(shí)施,運(yùn)行和維護(hù)。參加過全國/全省多個大型的計算機(jī)應(yīng)用項目,擅長的領(lǐng)域包括電信,金融、稅務(wù),大型互聯(lián)網(wǎng)web2.0應(yīng)用等。此前就職于IBM,任軟件架構(gòu)師。 在此之前曾任日本東京一家軟件企業(yè)的資深技術(shù)顧問。

曾任職BEA(中國)資深軟件架構(gòu)師,十余年的企業(yè)軟件架構(gòu)、開發(fā)和管理經(jīng)驗(yàn), 側(cè)重于企業(yè)應(yīng)用軟件架構(gòu)設(shè)計.主要負(fù)責(zé)客戶大型項目的架構(gòu)設(shè)計和研發(fā)。 作為技術(shù)專家保證項目的成功實(shí)施,運(yùn)行和維護(hù)。參加過全國/全省多個大型的計算機(jī)應(yīng)用項目,擅長的領(lǐng)域包括電信,金融、稅務(wù),大型互聯(lián)網(wǎng)web2.0應(yīng)用等。此前就職于IBM,任軟件架構(gòu)師。 在此之前曾任日本東京一家軟件企業(yè)的資深技術(shù)顧問。

課程費(fèi)用

7800.00 /人

課程時長

3

成為教練

課程簡介

這就是本課程所要講述的內(nèi)容---重構(gòu)。簡言之,該課程教你如何扭轉(zhuǎn)系統(tǒng)腐化,重構(gòu)復(fù)雜遺留系統(tǒng),減低維護(hù)成本。在面對一個錯綜復(fù)雜的,不透明的,令人費(fèi)解的系統(tǒng)時如何慢慢地,逐步地將其變成一個簡單的,有良好組織和設(shè)計的系統(tǒng)。

目標(biāo)收益

你們是否已經(jīng)存在如下現(xiàn)象,如果有,請參加我們課程,我們給你最佳實(shí)踐:
a)遺留系統(tǒng)的文檔已經(jīng)部分丟失和殘缺,甚至沒有
b)研發(fā)團(tuán)隊對系統(tǒng)的認(rèn)識非常有限.包括對需求,架構(gòu),設(shè)計和代碼
c)每當(dāng)修改系統(tǒng)Bug時,莫名其妙的新bug就會屢次出現(xiàn)
d)增加新功能十分困難,即使簡單新特性都需要很久時間才能完成
e)研發(fā)人員非常辛苦加班,并且沒有成就感,沒有工程師愿意維護(hù)老代碼,甚至為了逃離維護(hù)工作,采取離職
f)如果仔細(xì)分析當(dāng)前系統(tǒng)代碼,就會發(fā)現(xiàn)代碼關(guān)系是否混亂且難以維護(hù)
g)即使意思到重構(gòu)的重要性,誰應(yīng)該負(fù)責(zé)重構(gòu),如何開始,哪些需要重構(gòu)

培訓(xùn)對象

各類軟件研發(fā)中心的軟件設(shè)計師、架構(gòu)師, 項目經(jīng)理,技術(shù)總監(jiān),質(zhì)量部門經(jīng)理。對于重構(gòu)技術(shù)懷有疑問和困惑,需要梳理解答的團(tuán)隊和個人,效果最佳。

課程大綱

第一部分 為什么軟件需要及時重構(gòu)
第一單元 軟件腐爛--重構(gòu)的必要性
內(nèi)容一:軟件業(yè)者的反思: 軟件腐爛
1.軟件腐爛(Software rot),也叫做代碼腐爛(code rot)或軟件腐朽(software decay)。它描述了隨著時間的逝去感知到軟件的緩慢衰退,其將最終導(dǎo)致它變得不完善、不可使用或難以維護(hù)。
2.軟件腐爛(Software rot)有兩種形式:
3.1)隱匿的腐爛:軟件逐漸不再(仍)被使用隨著剩余的應(yīng)用程序的改變變得不能用。它已經(jīng)被觀察到不再被使用的軟件有可能一年的半衰期;
4.2) 活動的腐爛:軟件隨著不斷地被修改趨向于失去它的完整性。
5.破窗效應(yīng)與技術(shù)債務(wù)
6.案例演示1-通過演示大型項目,隨著客戶需求的變化,導(dǎo)致軟件結(jié)構(gòu)混亂,大家反思,為什么? 你認(rèn)為軟件腐爛的原因? 反思你們公司的軟件系統(tǒng)也面臨這樣的問題嗎?
第二部分 重構(gòu)
第二單元 何為重構(gòu)
內(nèi)容一:重構(gòu)
1.重構(gòu)概述
2.何時重構(gòu)
3.重構(gòu)的誤區(qū)
4.重構(gòu)是持續(xù)進(jìn)行的,不要先編寫爛代碼,再抽出重構(gòu)
5.如何發(fā)現(xiàn)哪些地方需要重構(gòu)
6.如何保證重構(gòu)的正確
7.如何測試重構(gòu)
8.通過一個小案例演示重構(gòu)的基本思想(什么時間重構(gòu),如何發(fā)現(xiàn)重構(gòu)點(diǎn),如何保證重構(gòu)的正確性,最后如何驗(yàn)收)

內(nèi)容二:案例—通過實(shí)際項目演示重構(gòu)
1.介紹項目需求情況,進(jìn)行設(shè)計
2.閱讀代碼指出代碼壞癥狀
3.通過重構(gòu)逐步改善代碼質(zhì)量
4.通過該案例演示重構(gòu)的過程,我們遇到的難處,如何解決?

內(nèi)容三:重構(gòu)關(guān)鍵—代碼的壞味道
1.代碼壞味道概述
2.代碼壞味道的分類
3.識別代碼壞味道,是重構(gòu)的最重要一步
4.所謂重構(gòu),無非就是嗅到壞味道,然后,一小步一小步的改了它。問題是,很多人對壞味道的容忍度讓他們嗅不到壞味道,
5.案例分析—通過真實(shí)項目的代碼,分析代碼壞味道
第二單元 重構(gòu) 內(nèi)容四一:重構(gòu)
1.重構(gòu)手法概述
2.簡要演示重構(gòu)的主要手法
3.使用IDE重構(gòu)工具進(jìn)行重構(gòu)
4.通過案例演示如何通過重構(gòu)工具完成重構(gòu)

內(nèi)容二:Rhythm of Refactoring -baby step
1.Baby steps involve making a few code changes and then checking your work by running tests. Typical refactorings take seconds or minutes to perform
2.The Rhythm of Refactoring goes like this:
a)Verify that all automated tests (microtests) pass
b)Decide what code to change
c)Implement one or more refactorings carefully
d)Run the microtests whenever you wish to confirm that changes have not altered system behavior
e)Repeat until the refactoring is complete or revert to an earlier state
第二單元 重構(gòu)難題 內(nèi)容一:重構(gòu)技術(shù)難題
1.如何發(fā)現(xiàn)重構(gòu)點(diǎn)
2.知道重構(gòu)的目標(biāo)(結(jié)果)
3.如何去重構(gòu)—重構(gòu)實(shí)踐
4.如何保證重構(gòu)的正確性-單元測試

內(nèi)容二:重構(gòu)業(yè)務(wù)難題
1.重構(gòu)手法概述
2.簡要演示重構(gòu)的主要手法
第三部分 重構(gòu)實(shí)戰(zhàn)1一函數(shù)相關(guān)重構(gòu)
第三單元 函數(shù)重構(gòu)
內(nèi)容一:函數(shù)的重構(gòu)
1.函數(shù)的重構(gòu)
2.巨型函數(shù)的種類
a)項目列表式巨型方法
b)鋸齒狀巨型方法
3.分解函數(shù)
4.助手方法提取
5.利用自動重構(gòu)對付巨型方法
6.利用手工重構(gòu)對付巨型方法
7.引入感知變量
8.函數(shù)依賴收集
9.分解助手方法和方法對象
10.通過案例介紹長函數(shù)的重構(gòu)最佳實(shí)踐
第三單元 函數(shù)策略和技巧 內(nèi)容一: Refactoring Strategies & Tactics
1.Refactoring Strategy: Piecemeal Refactoring
2.Refactoring Strategy:Divide & Conquer
3.Refactoring Strategy:Narrowed Change
4.Refactoring Strategy:Parallel Change
5.Refactoring Strategy:Unified Methods
6.Refactoring Strategy:Evolved Target
7.Refactoring Strategy: Graceful Retreat
8.Refactoring Strategy: Gradual Cutover
9.Refactoring Strategy: Preparing for Change
10.Refactoring Tactic: Rejected Parameter
11.Refactoring Tactic: Caller Swap
12.Refactoring Tactic:Encapsulated Dependency
第四部分 重構(gòu)實(shí)戰(zhàn)2一類重構(gòu)
第四單元 類重構(gòu)
內(nèi)容一:重構(gòu)案例—該案例重點(diǎn) 巨大類的重構(gòu)
重構(gòu)大類
1.對象的職責(zé)重構(gòu)
2.職責(zé)的識別
a)方法分組
b)觀察隱藏方法
c)尋找可以更改的原因
d)尋找內(nèi)部關(guān)系
e)尋找主要職責(zé)
f)接口分離—接口隔離原則
3.提取類和接口
4.通過案例介紹如何重構(gòu)巨大的類
第五部分 重構(gòu)實(shí)戰(zhàn)3一重構(gòu)到模式
第五單元 重構(gòu)到模式
內(nèi)容一:案例---重構(gòu)設(shè)計方案引入設(shè)計模式
1.通過項目分析重構(gòu)到模式的手段
2.構(gòu)造Template Method
3.以Composite取代一/多之分
4.引入Null Object
5.用Adapter統(tǒng)一接口
6.用Fatory Method引入多態(tài)創(chuàng)建
5.通過案例介紹如何重構(gòu)原始設(shè)計方案,演示如何通過重構(gòu)導(dǎo)入設(shè)計模式

內(nèi)容二:案例---重點(diǎn)介紹重構(gòu)基本類型依賴和對應(yīng)模式
1.通過案例學(xué)習(xí)以下重構(gòu)到模式手段
2.以State取代狀態(tài)改變條件語句
3.以Strategy取代條件邏輯
4.以Composite取代隱含樹
5.以Interpreter取代隱式語言
6.轉(zhuǎn)移裝飾功能到Decorator
7.用Builder封裝Composite
8.重點(diǎn)學(xué)習(xí)案例的重構(gòu)到模式的過程

內(nèi)容三:案例---重點(diǎn)介紹重構(gòu)代碼重復(fù)和對應(yīng)模式
7.通過案例學(xué)習(xí)以下重構(gòu)到模式手段
8.構(gòu)造Template Method
9.以Composite取代一/多之分
10.引入Null Object
11.用Adapter統(tǒng)一接口
12.用Fatory Method引入多態(tài)創(chuàng)建
13.重點(diǎn)學(xué)習(xí)案例的重構(gòu)到模式的過程

內(nèi)容四:案例---重點(diǎn)介紹重構(gòu)代碼過長/過大的類/方法和對應(yīng)模式
1.轉(zhuǎn)移聚集操作到Vistor
2.以Strategy取代條件邏輯
3.以Command取代條件調(diào)度程序
4.轉(zhuǎn)移聚集操作到Collecting Parameter
5.重點(diǎn)學(xué)習(xí)案例的重構(gòu)到模式的過程

內(nèi)容五:案例---重點(diǎn)介紹條件邏輯過度復(fù)雜和對應(yīng)模式
1.以Strategy取代條件邏輯
2.以State取代狀態(tài)改變條件語句
3.轉(zhuǎn)移裝飾功能到Decorator
4.引入Null Object
5.以Command替換條件調(diào)度程序
6.轉(zhuǎn)移聚集操作到Visitor
7.重點(diǎn)學(xué)習(xí)案例的重構(gòu)到模式的過程
第六部分 重構(gòu)實(shí)戰(zhàn)4一模塊/組件重構(gòu)
第六單元 模塊重構(gòu)
內(nèi)容一:模塊重構(gòu)
1.優(yōu)良的系統(tǒng)設(shè)計意味著我們把系統(tǒng)分割成了一個個可單獨(dú)部署的組件,單獨(dú)部署意味著如果更改了一個組件,我們也不需要重新部署其他組件。
2.組件和包 壞味道
3.模塊之間解耦
4.組件的內(nèi)聚性實(shí)踐
5.組件的依賴性實(shí)踐
6.企業(yè)應(yīng)用系統(tǒng)組件設(shè)計最佳實(shí)踐
7.分析某項目,演示模塊重構(gòu),如何在大型應(yīng)用系統(tǒng)進(jìn)行模塊重構(gòu)
第七部分 重構(gòu)實(shí)戰(zhàn)5一數(shù)據(jù)庫重構(gòu)
第七單元 數(shù)據(jù)庫重構(gòu)(該部分根據(jù)需求,可以裁剪)
內(nèi)容一: 數(shù)據(jù)重構(gòu)過程
1.驗(yàn)證數(shù)據(jù)庫重構(gòu)是否合適
2.選擇最合適的數(shù)據(jù)庫重構(gòu)
3.讓原來的數(shù)據(jù)庫schema過時
4.前測試、中測試和后測試
5.修改數(shù)據(jù)庫schema
6.遷移源數(shù)據(jù)
7.重構(gòu)外部訪問程序
8.運(yùn)行回歸測試
9.對工作進(jìn)行版本控制
10.結(jié)束此次重構(gòu)
11.分析多年遺留的復(fù)雜項目,演示如何重構(gòu)數(shù)據(jù)庫, 數(shù)據(jù)庫重構(gòu)的一般步驟,和普通的應(yīng)用程序代碼的重構(gòu)的不同點(diǎn)。

內(nèi)容二: 數(shù)據(jù)庫重構(gòu)策略
1.小的變更更容易進(jìn)行
2.唯一地標(biāo)識每一次重構(gòu)
3.通過許多小變更實(shí)現(xiàn)一次大變更
4.建立數(shù)據(jù)庫配置表
5.觸發(fā)器優(yōu)于視圖或批量同步
6.選擇一個足夠長的轉(zhuǎn)換期
7.簡化數(shù)據(jù)庫變更控制委員會策略
8.簡化與其他團(tuán)隊的協(xié)商
9.封裝對數(shù)據(jù)庫的訪問
10.能夠容易地建立數(shù)據(jù)庫環(huán)境
11.不要復(fù)制sql
12.將數(shù)據(jù)庫資產(chǎn)置于變更控制之下
12.通過多個大型項目的數(shù)據(jù)庫重構(gòu)策略, 分析在不同的數(shù)據(jù)庫壞味道下,使用不同的重構(gòu)策略
第八部分 安全重構(gòu)--構(gòu)筑重構(gòu)測試體系
第八單元 單元測試-構(gòu)筑測試體系
內(nèi)容一:理解單元測試
1.理解單元測試 第一個單元測試
2.單元測試框架提供了什么功能
3.好的測試是什么樣子的
4.為什么要寫單元測試,為什么不寫單元測試
5.為什么要寫"好"的單元測試
6.分析真實(shí)項目,如何做單元測試, 已經(jīng)相關(guān)問題

內(nèi)容二:構(gòu)筑測試體系
1.單元測試中的壞味道
2.讓測試容易被看懂的模式
3.讓測試容易維護(hù)的模式
4.讓測試被信得過的模式
5.重構(gòu)單元測試,改進(jìn)代碼設(shè)計
6.如何在集成與單元、黑盒或白盒、Mock和非Mock之間做選擇?
7.結(jié)合多個案例項目進(jìn)行分析,分析什么是好的單元測試
第九單元 重構(gòu)管理 內(nèi)容一:安全重構(gòu)
1.重構(gòu)的恐懼心里
2.重構(gòu)勇氣
3.安全重構(gòu)和祈禱式重構(gòu)
4.安全重構(gòu)保證
a)依賴編輯器
b)簽名保持
c)單一目標(biāo)
d)依賴編譯器
e)個人的能力
f)代碼審查
g)單元測試
h)驗(yàn)收測試
i)人工測試
5.通過案例如何保證重構(gòu)的正確性
第一部分 為什么軟件需要及時重構(gòu)
第一單元 軟件腐爛--重構(gòu)的必要性
內(nèi)容一:軟件業(yè)者的反思: 軟件腐爛
1.軟件腐爛(Software rot),也叫做代碼腐爛(code rot)或軟件腐朽(software decay)。它描述了隨著時間的逝去感知到軟件的緩慢衰退,其將最終導(dǎo)致它變得不完善、不可使用或難以維護(hù)。
2.軟件腐爛(Software rot)有兩種形式:
3.1)隱匿的腐爛:軟件逐漸不再(仍)被使用隨著剩余的應(yīng)用程序的改變變得不能用。它已經(jīng)被觀察到不再被使用的軟件有可能一年的半衰期;
4.2) 活動的腐爛:軟件隨著不斷地被修改趨向于失去它的完整性。
5.破窗效應(yīng)與技術(shù)債務(wù)
6.案例演示1-通過演示大型項目,隨著客戶需求的變化,導(dǎo)致軟件結(jié)構(gòu)混亂,大家反思,為什么? 你認(rèn)為軟件腐爛的原因? 反思你們公司的軟件系統(tǒng)也面臨這樣的問題嗎?
第二部分 重構(gòu)
第二單元 何為重構(gòu)
內(nèi)容一:重構(gòu)
1.重構(gòu)概述
2.何時重構(gòu)
3.重構(gòu)的誤區(qū)
4.重構(gòu)是持續(xù)進(jìn)行的,不要先編寫爛代碼,再抽出重構(gòu)
5.如何發(fā)現(xiàn)哪些地方需要重構(gòu)
6.如何保證重構(gòu)的正確
7.如何測試重構(gòu)
8.通過一個小案例演示重構(gòu)的基本思想(什么時間重構(gòu),如何發(fā)現(xiàn)重構(gòu)點(diǎn),如何保證重構(gòu)的正確性,最后如何驗(yàn)收)

內(nèi)容二:案例—通過實(shí)際項目演示重構(gòu)
1.介紹項目需求情況,進(jìn)行設(shè)計
2.閱讀代碼指出代碼壞癥狀
3.通過重構(gòu)逐步改善代碼質(zhì)量
4.通過該案例演示重構(gòu)的過程,我們遇到的難處,如何解決?

內(nèi)容三:重構(gòu)關(guān)鍵—代碼的壞味道
1.代碼壞味道概述
2.代碼壞味道的分類
3.識別代碼壞味道,是重構(gòu)的最重要一步
4.所謂重構(gòu),無非就是嗅到壞味道,然后,一小步一小步的改了它。問題是,很多人對壞味道的容忍度讓他們嗅不到壞味道,
5.案例分析—通過真實(shí)項目的代碼,分析代碼壞味道
第二單元 重構(gòu)
內(nèi)容四一:重構(gòu)
1.重構(gòu)手法概述
2.簡要演示重構(gòu)的主要手法
3.使用IDE重構(gòu)工具進(jìn)行重構(gòu)
4.通過案例演示如何通過重構(gòu)工具完成重構(gòu)

內(nèi)容二:Rhythm of Refactoring -baby step
1.Baby steps involve making a few code changes and then checking your work by running tests. Typical refactorings take seconds or minutes to perform
2.The Rhythm of Refactoring goes like this:
a)Verify that all automated tests (microtests) pass
b)Decide what code to change
c)Implement one or more refactorings carefully
d)Run the microtests whenever you wish to confirm that changes have not altered system behavior
e)Repeat until the refactoring is complete or revert to an earlier state
第二單元 重構(gòu)難題
內(nèi)容一:重構(gòu)技術(shù)難題
1.如何發(fā)現(xiàn)重構(gòu)點(diǎn)
2.知道重構(gòu)的目標(biāo)(結(jié)果)
3.如何去重構(gòu)—重構(gòu)實(shí)踐
4.如何保證重構(gòu)的正確性-單元測試

內(nèi)容二:重構(gòu)業(yè)務(wù)難題
1.重構(gòu)手法概述
2.簡要演示重構(gòu)的主要手法
第三部分 重構(gòu)實(shí)戰(zhàn)1一函數(shù)相關(guān)重構(gòu)
第三單元 函數(shù)重構(gòu)
內(nèi)容一:函數(shù)的重構(gòu)
1.函數(shù)的重構(gòu)
2.巨型函數(shù)的種類
a)項目列表式巨型方法
b)鋸齒狀巨型方法
3.分解函數(shù)
4.助手方法提取
5.利用自動重構(gòu)對付巨型方法
6.利用手工重構(gòu)對付巨型方法
7.引入感知變量
8.函數(shù)依賴收集
9.分解助手方法和方法對象
10.通過案例介紹長函數(shù)的重構(gòu)最佳實(shí)踐
第三單元 函數(shù)策略和技巧
內(nèi)容一: Refactoring Strategies & Tactics
1.Refactoring Strategy: Piecemeal Refactoring
2.Refactoring Strategy:Divide & Conquer
3.Refactoring Strategy:Narrowed Change
4.Refactoring Strategy:Parallel Change
5.Refactoring Strategy:Unified Methods
6.Refactoring Strategy:Evolved Target
7.Refactoring Strategy: Graceful Retreat
8.Refactoring Strategy: Gradual Cutover
9.Refactoring Strategy: Preparing for Change
10.Refactoring Tactic: Rejected Parameter
11.Refactoring Tactic: Caller Swap
12.Refactoring Tactic:Encapsulated Dependency
第四部分 重構(gòu)實(shí)戰(zhàn)2一類重構(gòu)
第四單元 類重構(gòu)
內(nèi)容一:重構(gòu)案例—該案例重點(diǎn) 巨大類的重構(gòu)
重構(gòu)大類
1.對象的職責(zé)重構(gòu)
2.職責(zé)的識別
a)方法分組
b)觀察隱藏方法
c)尋找可以更改的原因
d)尋找內(nèi)部關(guān)系
e)尋找主要職責(zé)
f)接口分離—接口隔離原則
3.提取類和接口
4.通過案例介紹如何重構(gòu)巨大的類
第五部分 重構(gòu)實(shí)戰(zhàn)3一重構(gòu)到模式
第五單元 重構(gòu)到模式
內(nèi)容一:案例---重構(gòu)設(shè)計方案引入設(shè)計模式
1.通過項目分析重構(gòu)到模式的手段
2.構(gòu)造Template Method
3.以Composite取代一/多之分
4.引入Null Object
5.用Adapter統(tǒng)一接口
6.用Fatory Method引入多態(tài)創(chuàng)建
5.通過案例介紹如何重構(gòu)原始設(shè)計方案,演示如何通過重構(gòu)導(dǎo)入設(shè)計模式

內(nèi)容二:案例---重點(diǎn)介紹重構(gòu)基本類型依賴和對應(yīng)模式
1.通過案例學(xué)習(xí)以下重構(gòu)到模式手段
2.以State取代狀態(tài)改變條件語句
3.以Strategy取代條件邏輯
4.以Composite取代隱含樹
5.以Interpreter取代隱式語言
6.轉(zhuǎn)移裝飾功能到Decorator
7.用Builder封裝Composite
8.重點(diǎn)學(xué)習(xí)案例的重構(gòu)到模式的過程

內(nèi)容三:案例---重點(diǎn)介紹重構(gòu)代碼重復(fù)和對應(yīng)模式
7.通過案例學(xué)習(xí)以下重構(gòu)到模式手段
8.構(gòu)造Template Method
9.以Composite取代一/多之分
10.引入Null Object
11.用Adapter統(tǒng)一接口
12.用Fatory Method引入多態(tài)創(chuàng)建
13.重點(diǎn)學(xué)習(xí)案例的重構(gòu)到模式的過程

內(nèi)容四:案例---重點(diǎn)介紹重構(gòu)代碼過長/過大的類/方法和對應(yīng)模式
1.轉(zhuǎn)移聚集操作到Vistor
2.以Strategy取代條件邏輯
3.以Command取代條件調(diào)度程序
4.轉(zhuǎn)移聚集操作到Collecting Parameter
5.重點(diǎn)學(xué)習(xí)案例的重構(gòu)到模式的過程

內(nèi)容五:案例---重點(diǎn)介紹條件邏輯過度復(fù)雜和對應(yīng)模式
1.以Strategy取代條件邏輯
2.以State取代狀態(tài)改變條件語句
3.轉(zhuǎn)移裝飾功能到Decorator
4.引入Null Object
5.以Command替換條件調(diào)度程序
6.轉(zhuǎn)移聚集操作到Visitor
7.重點(diǎn)學(xué)習(xí)案例的重構(gòu)到模式的過程
第六部分 重構(gòu)實(shí)戰(zhàn)4一模塊/組件重構(gòu)
第六單元 模塊重構(gòu)

內(nèi)容一:模塊重構(gòu)
1.優(yōu)良的系統(tǒng)設(shè)計意味著我們把系統(tǒng)分割成了一個個可單獨(dú)部署的組件,單獨(dú)部署意味著如果更改了一個組件,我們也不需要重新部署其他組件。
2.組件和包 壞味道
3.模塊之間解耦
4.組件的內(nèi)聚性實(shí)踐
5.組件的依賴性實(shí)踐
6.企業(yè)應(yīng)用系統(tǒng)組件設(shè)計最佳實(shí)踐
7.分析某項目,演示模塊重構(gòu),如何在大型應(yīng)用系統(tǒng)進(jìn)行模塊重構(gòu)
第七部分 重構(gòu)實(shí)戰(zhàn)5一數(shù)據(jù)庫重構(gòu)
第七單元 數(shù)據(jù)庫重構(gòu)(該部分根據(jù)需求,可以裁剪)
內(nèi)容一: 數(shù)據(jù)重構(gòu)過程
1.驗(yàn)證數(shù)據(jù)庫重構(gòu)是否合適
2.選擇最合適的數(shù)據(jù)庫重構(gòu)
3.讓原來的數(shù)據(jù)庫schema過時
4.前測試、中測試和后測試
5.修改數(shù)據(jù)庫schema
6.遷移源數(shù)據(jù)
7.重構(gòu)外部訪問程序
8.運(yùn)行回歸測試
9.對工作進(jìn)行版本控制
10.結(jié)束此次重構(gòu)
11.分析多年遺留的復(fù)雜項目,演示如何重構(gòu)數(shù)據(jù)庫, 數(shù)據(jù)庫重構(gòu)的一般步驟,和普通的應(yīng)用程序代碼的重構(gòu)的不同點(diǎn)。

內(nèi)容二: 數(shù)據(jù)庫重構(gòu)策略
1.小的變更更容易進(jìn)行
2.唯一地標(biāo)識每一次重構(gòu)
3.通過許多小變更實(shí)現(xiàn)一次大變更
4.建立數(shù)據(jù)庫配置表
5.觸發(fā)器優(yōu)于視圖或批量同步
6.選擇一個足夠長的轉(zhuǎn)換期
7.簡化數(shù)據(jù)庫變更控制委員會策略
8.簡化與其他團(tuán)隊的協(xié)商
9.封裝對數(shù)據(jù)庫的訪問
10.能夠容易地建立數(shù)據(jù)庫環(huán)境
11.不要復(fù)制sql
12.將數(shù)據(jù)庫資產(chǎn)置于變更控制之下
12.通過多個大型項目的數(shù)據(jù)庫重構(gòu)策略, 分析在不同的數(shù)據(jù)庫壞味道下,使用不同的重構(gòu)策略
第八部分 安全重構(gòu)--構(gòu)筑重構(gòu)測試體系
第八單元 單元測試-構(gòu)筑測試體系
內(nèi)容一:理解單元測試
1.理解單元測試 第一個單元測試
2.單元測試框架提供了什么功能
3.好的測試是什么樣子的
4.為什么要寫單元測試,為什么不寫單元測試
5.為什么要寫"好"的單元測試
6.分析真實(shí)項目,如何做單元測試, 已經(jīng)相關(guān)問題

內(nèi)容二:構(gòu)筑測試體系
1.單元測試中的壞味道
2.讓測試容易被看懂的模式
3.讓測試容易維護(hù)的模式
4.讓測試被信得過的模式
5.重構(gòu)單元測試,改進(jìn)代碼設(shè)計
6.如何在集成與單元、黑盒或白盒、Mock和非Mock之間做選擇?
7.結(jié)合多個案例項目進(jìn)行分析,分析什么是好的單元測試
第九單元 重構(gòu)管理
內(nèi)容一:安全重構(gòu)
1.重構(gòu)的恐懼心里
2.重構(gòu)勇氣
3.安全重構(gòu)和祈禱式重構(gòu)
4.安全重構(gòu)保證
a)依賴編輯器
b)簽名保持
c)單一目標(biāo)
d)依賴編譯器
e)個人的能力
f)代碼審查
g)單元測試
h)驗(yàn)收測試
i)人工測試
5.通過案例如何保證重構(gòu)的正確性

課程費(fèi)用

7800.00 /人

課程時長

3

預(yù)約體驗(yàn)票 我要分享

近期公開課推薦

近期公開課推薦

活動詳情

提交需求