架構(gòu)師
互聯(lián)網(wǎng)
電商
支付平臺(tái)
傳統(tǒng)金融
互聯(lián)網(wǎng)金融
可穿戴設(shè)備
醫(yī)療
智能家居
物聯(lián)網(wǎng)
車(chē)聯(lián)網(wǎng)
安全
制造
電信
政府機(jī)構(gòu)
稅務(wù)
快消品
其他
推薦課程
average > 0 ? $model->average . '分' : '10.0分' ?>

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

課程費(fèi)用

5800.00 /人

課程時(shí)長(zhǎng)

2

成為教練

課程簡(jiǎn)介

重構(gòu)是持續(xù)進(jìn)行的,而不是在項(xiàng)目結(jié)束時(shí)、發(fā)布版本時(shí)、迭代結(jié)束時(shí),甚至不是每天快下班時(shí)才進(jìn)行的。重構(gòu)是我們每隔一個(gè)小時(shí)或者半個(gè)小時(shí)就要去做的事情。通過(guò)重構(gòu),我們可以持續(xù)地保持代碼盡可能干凈、簡(jiǎn)單并且具有表達(dá)力。

目標(biāo)收益

隨著不同產(chǎn)品的推出,不同客戶(hù)、不同版本的發(fā)布,需要維護(hù)的遺留代碼越來(lái)越多,重構(gòu)也就在所難免。不僅如此,所有的軟件系統(tǒng),經(jīng)過(guò)一段時(shí)間的維護(hù),都會(huì)逐漸變成遺留系統(tǒng),并且都遭遇了緩慢而不可抗拒的腐化。因此,軟件開(kāi)發(fā)人員不得不面對(duì)既有系統(tǒng)的混亂代碼。而本課程正是告訴你如何重構(gòu)既有的遺留系統(tǒng),如何重構(gòu)代碼、重構(gòu)設(shè)計(jì)、重構(gòu)架構(gòu)。

培訓(xùn)對(duì)象

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

課程大綱

第一部分 為什么軟件需要及時(shí)重構(gòu)

第一單元 剖析軟件質(zhì)量不斷下降的根源
質(zhì)量不斷下降的表現(xiàn):
1. 程序代碼越來(lái)越亂
2. 軟件維護(hù)成本越來(lái)越高
3. 軟件變更越來(lái)越困難
4. 無(wú)法進(jìn)行新技術(shù)的改造
以往采取的措施:
1. 頭痛醫(yī)頭,腳痛醫(yī)腳
2. 拋棄掉重新編寫(xiě)
3. 因擔(dān)心未來(lái)變化而做的過(guò)度設(shè)計(jì)
帶來(lái)的問(wèn)題
1. 團(tuán)隊(duì)成員越來(lái)越多但效率卻越來(lái)越低
2. 測(cè)試變得越來(lái)越困難而任務(wù)繁重
3. 軟件系統(tǒng)越來(lái)越笨重而不適應(yīng)未來(lái)變化
分析與反思

案例分析:一個(gè)遺留系統(tǒng)的演化過(guò)程
1. 起初的設(shè)計(jì)
2. 隨后的變更
3. 質(zhì)量不斷下降的過(guò)程
軟件質(zhì)量下降的根源:
1. 軟件總是因變更而變得越來(lái)越復(fù)雜
2. 軟件結(jié)構(gòu)已經(jīng)不再適應(yīng)復(fù)雜的軟件需求
3. 必須要調(diào)整軟件結(jié)構(gòu)以適應(yīng)新的軟件需求

軟件是因需求變更而質(zhì)量下降嗎?
案例分析:推演軟件變更的設(shè)計(jì)過(guò)程
應(yīng)對(duì)軟件變更的最佳方式:兩頂帽子
1. 重構(gòu)原有代碼以適應(yīng)新的需求
2. 實(shí)現(xiàn)新的需求
案例:演示兩頂帽子的設(shè)計(jì)過(guò)程
第二單元 高質(zhì)量的軟件設(shè)計(jì)過(guò)程 以往軟件設(shè)計(jì)的過(guò)程:
1. 演示以往軟件設(shè)計(jì)的過(guò)程
2. 剖析以往軟件設(shè)計(jì)的問(wèn)題與風(fēng)險(xiǎn)
小步快跑模式的開(kāi)發(fā)過(guò)程:
1. 用最快的速度開(kāi)發(fā)一個(gè)最核心的功能
2. 讓第一個(gè)版本運(yùn)行起來(lái)并可以驗(yàn)證
3. 在第一個(gè)版本的基礎(chǔ)上不斷添加功能:
a. 每次只添加一個(gè)很簡(jiǎn)單、很單一的功能
b. 每次以?xún)身斆弊拥姆绞教砑有鹿δ?br/>c. 運(yùn)行、調(diào)試與驗(yàn)證
d. 重復(fù)這個(gè)過(guò)程添加下一個(gè)功能
4. 復(fù)雜的系統(tǒng)就是由一次次正確開(kāi)發(fā)的不斷積累而成
案例:演示小步快跑的開(kāi)發(fā)過(guò)程
小步快跑解決的問(wèn)題:
1. 復(fù)雜功能有效地解耦
2. 代碼編寫(xiě)總是可測(cè)試與驗(yàn)證
3. 簡(jiǎn)化設(shè)計(jì)與思考的復(fù)雜度
4. 適時(shí)重構(gòu)以避免軟件退化

測(cè)試驅(qū)動(dòng)設(shè)計(jì)
1. TDD vs. 后測(cè)試開(kāi)發(fā)
2. 案例:演示測(cè)試驅(qū)動(dòng)設(shè)計(jì)的過(guò)程
3. 測(cè)試驅(qū)動(dòng)設(shè)計(jì)的優(yōu)勢(shì)
4. 實(shí)踐測(cè)試驅(qū)動(dòng)設(shè)計(jì)的難題
討論:自動(dòng)化測(cè)試腳本應(yīng)當(dāng)由誰(shuí)來(lái)寫(xiě)?

練習(xí):運(yùn)用小步快跑的方式設(shè)計(jì)一個(gè)軟件
第二部分 重構(gòu)的概念

第三單元 何為重構(gòu)
軟件重構(gòu)的概念
1. 重構(gòu)是一系列代碼的等量變換
案例:一個(gè)Hello World重構(gòu)過(guò)程
2. 重構(gòu)的保險(xiǎn)索:自動(dòng)化測(cè)試
案例:Hello World的自動(dòng)化測(cè)試過(guò)程
3. 軟件修改的四種動(dòng)機(jī)——重構(gòu)的價(jià)值
4. 一個(gè)真實(shí)的謊言——重構(gòu)的誤區(qū)
5. 重構(gòu)的主要方法與技巧

案例分析:重構(gòu)一個(gè)大型遺留系統(tǒng)
1. 重構(gòu)第一步:分解大函數(shù)
超級(jí)大函數(shù)及其危害
案例:演示大函數(shù)產(chǎn)生的過(guò)程
案例:演示抽取方法操作步驟
實(shí)踐抽取方法會(huì)遇到的問(wèn)題和解決方案
2. 重構(gòu)第二步:拆分大對(duì)象
超級(jí)大對(duì)象及其危害
案例:演示超級(jí)大對(duì)象的產(chǎn)生過(guò)程
案例:演示抽取類(lèi)的操作步驟
講解單一職責(zé)設(shè)計(jì)原則
案例:演示“分久必合,合久必分”的重構(gòu)過(guò)程
3. 重構(gòu)第三步:提高復(fù)用率
講解順序編程及其危害
“不要重復(fù)代碼”原則
案例:提高代碼復(fù)用的6個(gè)方法
案例:演示新增代碼時(shí)的代碼復(fù)用過(guò)程
用靜態(tài)檢查工具檢查重復(fù)代碼
4. 重構(gòu)第四步:可擴(kuò)展設(shè)計(jì)
過(guò)度設(shè)計(jì) vs. 恰如其分的設(shè)計(jì)
講解“開(kāi)放-封閉”的設(shè)計(jì)原則
案例:講解可擴(kuò)展設(shè)計(jì)的4個(gè)方法
案例:講解新增代碼的可擴(kuò)展設(shè)計(jì)過(guò)程
5. 重構(gòu)第五步:降低耦合度
案例:講解接口、實(shí)現(xiàn)與工廠模式
案例:講解外部接口解耦與適配器模式
案例:講解繼承泛濫問(wèn)題與橋接模式
案例:講解方法解耦與策略模式
案例:講解過(guò)程解耦與命令模式
案例:講解透明擴(kuò)展與組合模式、裝飾者模式
6. 重構(gòu)第六步:系統(tǒng)分層
反思軟件架構(gòu)需要怎樣的分層結(jié)構(gòu)
遺留系統(tǒng)如何擁抱需求變化
遺留系統(tǒng)如何應(yīng)對(duì)技術(shù)變革
7. 重構(gòu)第七步:領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)
領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的概念
講解領(lǐng)域模型分析方法
講解原文分析法與領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)

討論:如何制定重構(gòu)項(xiàng)目計(jì)劃
練習(xí):重構(gòu)一個(gè)小程序并編寫(xiě)測(cè)試腳本
第四單元 關(guān)于重構(gòu)的討論 什么時(shí)候重構(gòu)
1. 重構(gòu)是一種習(xí)慣
2. 重構(gòu)讓程序可讀
3. 重構(gòu),才好復(fù)用
4. 先重構(gòu),再擴(kuò)展
5. 緊急任務(wù)時(shí)的重構(gòu)

測(cè)試的困境
1. 重構(gòu)初期的困局
2. 解耦與自動(dòng)化測(cè)試
3. 建立自動(dòng)化測(cè)試體系

重構(gòu)的評(píng)價(jià)
1. 評(píng)價(jià)軟件質(zhì)量的指標(biāo)
2. 評(píng)價(jià)軟件質(zhì)量的工具
第一部分 為什么軟件需要及時(shí)重構(gòu)

第一單元 剖析軟件質(zhì)量不斷下降的根源
質(zhì)量不斷下降的表現(xiàn):
1. 程序代碼越來(lái)越亂
2. 軟件維護(hù)成本越來(lái)越高
3. 軟件變更越來(lái)越困難
4. 無(wú)法進(jìn)行新技術(shù)的改造
以往采取的措施:
1. 頭痛醫(yī)頭,腳痛醫(yī)腳
2. 拋棄掉重新編寫(xiě)
3. 因擔(dān)心未來(lái)變化而做的過(guò)度設(shè)計(jì)
帶來(lái)的問(wèn)題
1. 團(tuán)隊(duì)成員越來(lái)越多但效率卻越來(lái)越低
2. 測(cè)試變得越來(lái)越困難而任務(wù)繁重
3. 軟件系統(tǒng)越來(lái)越笨重而不適應(yīng)未來(lái)變化
分析與反思

案例分析:一個(gè)遺留系統(tǒng)的演化過(guò)程
1. 起初的設(shè)計(jì)
2. 隨后的變更
3. 質(zhì)量不斷下降的過(guò)程
軟件質(zhì)量下降的根源:
1. 軟件總是因變更而變得越來(lái)越復(fù)雜
2. 軟件結(jié)構(gòu)已經(jīng)不再適應(yīng)復(fù)雜的軟件需求
3. 必須要調(diào)整軟件結(jié)構(gòu)以適應(yīng)新的軟件需求

軟件是因需求變更而質(zhì)量下降嗎?
案例分析:推演軟件變更的設(shè)計(jì)過(guò)程
應(yīng)對(duì)軟件變更的最佳方式:兩頂帽子
1. 重構(gòu)原有代碼以適應(yīng)新的需求
2. 實(shí)現(xiàn)新的需求
案例:演示兩頂帽子的設(shè)計(jì)過(guò)程
第二單元 高質(zhì)量的軟件設(shè)計(jì)過(guò)程
以往軟件設(shè)計(jì)的過(guò)程:
1. 演示以往軟件設(shè)計(jì)的過(guò)程
2. 剖析以往軟件設(shè)計(jì)的問(wèn)題與風(fēng)險(xiǎn)
小步快跑模式的開(kāi)發(fā)過(guò)程:
1. 用最快的速度開(kāi)發(fā)一個(gè)最核心的功能
2. 讓第一個(gè)版本運(yùn)行起來(lái)并可以驗(yàn)證
3. 在第一個(gè)版本的基礎(chǔ)上不斷添加功能:
a. 每次只添加一個(gè)很簡(jiǎn)單、很單一的功能
b. 每次以?xún)身斆弊拥姆绞教砑有鹿δ?br/>c. 運(yùn)行、調(diào)試與驗(yàn)證
d. 重復(fù)這個(gè)過(guò)程添加下一個(gè)功能
4. 復(fù)雜的系統(tǒng)就是由一次次正確開(kāi)發(fā)的不斷積累而成
案例:演示小步快跑的開(kāi)發(fā)過(guò)程
小步快跑解決的問(wèn)題:
1. 復(fù)雜功能有效地解耦
2. 代碼編寫(xiě)總是可測(cè)試與驗(yàn)證
3. 簡(jiǎn)化設(shè)計(jì)與思考的復(fù)雜度
4. 適時(shí)重構(gòu)以避免軟件退化

測(cè)試驅(qū)動(dòng)設(shè)計(jì)
1. TDD vs. 后測(cè)試開(kāi)發(fā)
2. 案例:演示測(cè)試驅(qū)動(dòng)設(shè)計(jì)的過(guò)程
3. 測(cè)試驅(qū)動(dòng)設(shè)計(jì)的優(yōu)勢(shì)
4. 實(shí)踐測(cè)試驅(qū)動(dòng)設(shè)計(jì)的難題
討論:自動(dòng)化測(cè)試腳本應(yīng)當(dāng)由誰(shuí)來(lái)寫(xiě)?

練習(xí):運(yùn)用小步快跑的方式設(shè)計(jì)一個(gè)軟件
第二部分 重構(gòu)的概念

第三單元 何為重構(gòu)
軟件重構(gòu)的概念
1. 重構(gòu)是一系列代碼的等量變換
案例:一個(gè)Hello World重構(gòu)過(guò)程
2. 重構(gòu)的保險(xiǎn)索:自動(dòng)化測(cè)試
案例:Hello World的自動(dòng)化測(cè)試過(guò)程
3. 軟件修改的四種動(dòng)機(jī)——重構(gòu)的價(jià)值
4. 一個(gè)真實(shí)的謊言——重構(gòu)的誤區(qū)
5. 重構(gòu)的主要方法與技巧

案例分析:重構(gòu)一個(gè)大型遺留系統(tǒng)
1. 重構(gòu)第一步:分解大函數(shù)
超級(jí)大函數(shù)及其危害
案例:演示大函數(shù)產(chǎn)生的過(guò)程
案例:演示抽取方法操作步驟
實(shí)踐抽取方法會(huì)遇到的問(wèn)題和解決方案
2. 重構(gòu)第二步:拆分大對(duì)象
超級(jí)大對(duì)象及其危害
案例:演示超級(jí)大對(duì)象的產(chǎn)生過(guò)程
案例:演示抽取類(lèi)的操作步驟
講解單一職責(zé)設(shè)計(jì)原則
案例:演示“分久必合,合久必分”的重構(gòu)過(guò)程
3. 重構(gòu)第三步:提高復(fù)用率
講解順序編程及其危害
“不要重復(fù)代碼”原則
案例:提高代碼復(fù)用的6個(gè)方法
案例:演示新增代碼時(shí)的代碼復(fù)用過(guò)程
用靜態(tài)檢查工具檢查重復(fù)代碼
4. 重構(gòu)第四步:可擴(kuò)展設(shè)計(jì)
過(guò)度設(shè)計(jì) vs. 恰如其分的設(shè)計(jì)
講解“開(kāi)放-封閉”的設(shè)計(jì)原則
案例:講解可擴(kuò)展設(shè)計(jì)的4個(gè)方法
案例:講解新增代碼的可擴(kuò)展設(shè)計(jì)過(guò)程
5. 重構(gòu)第五步:降低耦合度
案例:講解接口、實(shí)現(xiàn)與工廠模式
案例:講解外部接口解耦與適配器模式
案例:講解繼承泛濫問(wèn)題與橋接模式
案例:講解方法解耦與策略模式
案例:講解過(guò)程解耦與命令模式
案例:講解透明擴(kuò)展與組合模式、裝飾者模式
6. 重構(gòu)第六步:系統(tǒng)分層
反思軟件架構(gòu)需要怎樣的分層結(jié)構(gòu)
遺留系統(tǒng)如何擁抱需求變化
遺留系統(tǒng)如何應(yīng)對(duì)技術(shù)變革
7. 重構(gòu)第七步:領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)
領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的概念
講解領(lǐng)域模型分析方法
講解原文分析法與領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)

討論:如何制定重構(gòu)項(xiàng)目計(jì)劃
練習(xí):重構(gòu)一個(gè)小程序并編寫(xiě)測(cè)試腳本
第四單元 關(guān)于重構(gòu)的討論
什么時(shí)候重構(gòu)
1. 重構(gòu)是一種習(xí)慣
2. 重構(gòu)讓程序可讀
3. 重構(gòu),才好復(fù)用
4. 先重構(gòu),再擴(kuò)展
5. 緊急任務(wù)時(shí)的重構(gòu)

測(cè)試的困境
1. 重構(gòu)初期的困局
2. 解耦與自動(dòng)化測(cè)試
3. 建立自動(dòng)化測(cè)試體系

重構(gòu)的評(píng)價(jià)
1. 評(píng)價(jià)軟件質(zhì)量的指標(biāo)
2. 評(píng)價(jià)軟件質(zhì)量的工具

課程費(fèi)用

5800.00 /人

課程時(shí)長(zhǎng)

2

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

近期公開(kāi)課推薦

近期公開(kāi)課推薦

活動(dòng)詳情

提交需求