工程師
互聯(lián)網(wǎng)
自動(dòng)化測(cè)試
推薦課程
average > 0 ? $model->average . '分' : '10.0分' ?>

軟件重構(gòu)——C#版

zil

科陸公司 首席架構(gòu)師

曾在華為和科陸公司擔(dān)任多年敏捷教練和架構(gòu)師
擁有國(guó)家“系統(tǒng)架構(gòu)設(shè)計(jì)師(高級(jí))”和“系統(tǒng)分析師(高級(jí))”兩項(xiàng)職業(yè)資格認(rèn)證。
具有多年嵌入式軟件開(kāi)發(fā)、設(shè)計(jì)和管理經(jīng)驗(yàn),曾在華為和科陸公司擔(dān)任高級(jí)軟件工程師、系統(tǒng)工程師、敏捷教練、CMMI設(shè)計(jì)組組長(zhǎng)、事業(yè)部首席軟件架構(gòu)師等職務(wù)。主要擅長(zhǎng)敏捷實(shí)踐在各領(lǐng)域的應(yīng)用,包括代碼持續(xù)優(yōu)化與重構(gòu),嵌入式C語(yǔ)言架構(gòu)設(shè)計(jì)與自動(dòng)化測(cè)試,C#、java語(yǔ)言架構(gòu)設(shè)計(jì)與自動(dòng)化測(cè)試。精通嵌入式操作系統(tǒng)uCOS在多個(gè)平臺(tái)的移植與運(yùn)用開(kāi)發(fā)。授課經(jīng)驗(yàn)豐富,曾為沈陽(yáng)飛利浦、南京西門(mén)子、武漢烽火等知名企業(yè),開(kāi)展過(guò)架構(gòu)設(shè)計(jì)相關(guān)的內(nèi)訓(xùn)課程。

曾在華為和科陸公司擔(dān)任多年敏捷教練和架構(gòu)師 擁有國(guó)家“系統(tǒng)架構(gòu)設(shè)計(jì)師(高級(jí))”和“系統(tǒng)分析師(高級(jí))”兩項(xiàng)職業(yè)資格認(rèn)證。 具有多年嵌入式軟件開(kāi)發(fā)、設(shè)計(jì)和管理經(jīng)驗(yàn),曾在華為和科陸公司擔(dān)任高級(jí)軟件工程師、系統(tǒng)工程師、敏捷教練、CMMI設(shè)計(jì)組組長(zhǎng)、事業(yè)部首席軟件架構(gòu)師等職務(wù)。主要擅長(zhǎng)敏捷實(shí)踐在各領(lǐng)域的應(yīng)用,包括代碼持續(xù)優(yōu)化與重構(gòu),嵌入式C語(yǔ)言架構(gòu)設(shè)計(jì)與自動(dòng)化測(cè)試,C#、java語(yǔ)言架構(gòu)設(shè)計(jì)與自動(dòng)化測(cè)試。精通嵌入式操作系統(tǒng)uCOS在多個(gè)平臺(tái)的移植與運(yùn)用開(kāi)發(fā)。授課經(jīng)驗(yàn)豐富,曾為沈陽(yáng)飛利浦、南京西門(mén)子、武漢烽火等知名企業(yè),開(kāi)展過(guò)架構(gòu)設(shè)計(jì)相關(guān)的內(nèi)訓(xùn)課程。

課程費(fèi)用

6800.00 /人

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

3

成為教練

課程簡(jiǎn)介

1、以重構(gòu)視角,剖析多家巨頭軟件公司的成敗興衰。揭示重構(gòu)工作的重要性。
2、與敏捷管理結(jié)合,提供重構(gòu)管理的策略與方式方法。
3、借助案例,展現(xiàn)重構(gòu)步驟的最佳實(shí)踐。
4、重構(gòu)的保證:自動(dòng)化測(cè)試。
5、重構(gòu)的基礎(chǔ)工作:尋找代碼的壞味道。
6、用多個(gè)實(shí)戰(zhàn)訓(xùn)練的方式,由粗到細(xì),講解類重構(gòu)、函數(shù)重構(gòu)、函數(shù)內(nèi)部重構(gòu)3個(gè)層次要達(dá)成的重構(gòu)目標(biāo),以及相關(guān)的重構(gòu)技巧。

目標(biāo)收益

1、隨著軟件越來(lái)越大,開(kāi)發(fā)效率越來(lái)越低。需求變更需要多處代碼修改,并且極易引入Bug。
2、管理者不知道如何評(píng)判軟件內(nèi)部質(zhì)量的優(yōu)劣,缺乏衡量標(biāo)準(zhǔn)的知識(shí)和相關(guān)工具的運(yùn)用。
3、有經(jīng)驗(yàn)的老員工,因?yàn)閰挓┝丝菰锏木S護(hù)工作而離職。
4、程序員員希望改變代碼腐化的現(xiàn)狀,卻不知道如何入手。
5、項(xiàng)目開(kāi)發(fā)人員缺乏設(shè)計(jì)原則的知識(shí),開(kāi)發(fā)的代碼只是為了完成功能,很少進(jìn)行架構(gòu)優(yōu)化。
6、軟件無(wú)法重用,每一個(gè)新項(xiàng)目幾乎都是一次重新開(kāi)始。
7、由于代碼可讀性差,新員工無(wú)法接手遺留系統(tǒng)。并且軟件越維護(hù)越雜亂

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

培訓(xùn)面向人群:使用面向?qū)ο笳Z(yǔ)言的軟件架構(gòu)師、軟件設(shè)計(jì)師、程序員、測(cè)試人員。

課程大綱

第一單元

重構(gòu)的重要性

重構(gòu)管理
該單元內(nèi)容主要面向公司管理人員。
通過(guò)分析巨頭軟件公司在代碼維護(hù)上的失敗經(jīng)驗(yàn),讓管理者認(rèn)識(shí)到重構(gòu)工作的重要性。
并提出相應(yīng)的管理辦法。

1、開(kāi)發(fā)效率問(wèn)題
(1)大部分公司的現(xiàn)狀
(2)消失的巨頭公司
(3)代碼是怎么腐化變爛的
(4)代碼是債務(wù),而不是資產(chǎn)
2、償還債務(wù)的辦法――重構(gòu)與重寫(xiě)
(1)重構(gòu)與重新的區(qū)別
(2)為何要選擇重構(gòu)而不是重寫(xiě)?
3、重構(gòu)管理
(1)重新認(rèn)識(shí)代碼的內(nèi)部質(zhì)量
(2)重構(gòu)面臨的管理挑戰(zhàn)
重構(gòu)的推行策略與方式
第二單元

重構(gòu)對(duì)開(kāi)發(fā)人員的意義

重構(gòu)最佳實(shí)踐
從第二單元開(kāi)始,授課內(nèi)容面向程序員。
通過(guò)案例,展示糟糕代碼對(duì)程序員工作情緒的影響,讓程序員產(chǎn)生主動(dòng)重構(gòu)的動(dòng)力。
通過(guò)實(shí)戰(zhàn)訓(xùn)練操作,向程序員說(shuō)明重構(gòu)的最佳實(shí)踐步驟。
并在實(shí)戰(zhàn)訓(xùn)練的同時(shí),介紹幾個(gè)重構(gòu)相關(guān)工具的使用方法。

1、重構(gòu)――從程序員自己做起
(1)從中興的案例說(shuō)起
(2)寫(xiě)出好代碼的目的
(3)代碼是寫(xiě)給人讀的,而不是寫(xiě)給機(jī)器跑的
(4)讓營(yíng)地比你來(lái)時(shí)更干凈
2、重構(gòu)的最佳實(shí)踐
(1)覓取重構(gòu)點(diǎn)
(2)重構(gòu)代碼
(3)自動(dòng)化單元測(cè)試
3、重構(gòu)相關(guān)工具
(1)單元測(cè)試工具
(2)測(cè)試覆蓋率工具
(3)打樁工具
(4)自動(dòng)化重構(gòu)工具
(5)自動(dòng)化測(cè)試工具
第三單元

嗅出代碼的壞味道
介紹代碼的多種壞味道,為重構(gòu)點(diǎn)指明方向。
學(xué)習(xí)使用代碼內(nèi)部質(zhì)量檢測(cè)工具,讓覓取重構(gòu)點(diǎn)的工作工具化。
學(xué)習(xí)使用自動(dòng)化檢測(cè)工具,讓覓取重構(gòu)點(diǎn)的工作自動(dòng)化。

1、壞味道的分類
(1)重復(fù)的代碼
(2)含糊不清的命名
(3)方法相關(guān)的壞味道
(4)類相關(guān)的壞味道
(5)散彈式修改
(6)發(fā)散式變化
(7)不恰當(dāng)?shù)谋┞?br/>(8)過(guò)多的注釋
(9)其他壞味道
2、“鼻子”麻木了怎么辦
代碼內(nèi)部質(zhì)量檢測(cè)工具
3、沒(méi)時(shí)間檢測(cè)怎么辦
(1)自動(dòng)化的測(cè)試和告警工具
(2)自動(dòng)化檢測(cè)原理
第四單元

類重構(gòu)技能
講解創(chuàng)建類的目的。引申出對(duì)象職責(zé)的概念,并通過(guò)實(shí)戰(zhàn)訓(xùn)練講述職責(zé)劃分的技巧。
講授面向?qū)ο笤O(shè)計(jì)的5大設(shè)計(jì)原則。
詳細(xì)講解“單一職責(zé)原則”。
通過(guò)實(shí)戰(zhàn)訓(xùn)練,傳授“依賴倒置原則”的使用。

1、為什么需要封裝類
(1)設(shè)計(jì)“類”概念的目的
(2)良好模塊和糟糕模塊的區(qū)別
(3)最少知道原則
(4)封裝相關(guān)的壞味道
2、對(duì)象職責(zé)概念
(1)對(duì)象職責(zé)概論
(2)對(duì)象職責(zé)的劃分技巧
3、面向?qū)ο笤O(shè)計(jì)的5大設(shè)計(jì)原則
(1)單一職責(zé)原則
(2)開(kāi)閉原則
(3)里氏替換原則
(4)接口隔離原則
(5)依賴倒置原則
4、單一職責(zé)原則
(1)定義與案例
(2)職責(zé)的識(shí)別技巧
(3)職責(zé)相關(guān)的壞味道
5、依賴倒置原則
(1)定義
(2)案例
6、類重構(gòu)技巧
(1)提煉抽象
(2)打樁測(cè)試
(3)分離組件(6個(gè)組包原則)
(4)組件內(nèi)部?jī)?yōu)化
7、設(shè)計(jì)模式
(1)策略模式
(2)工廠模式
(3)MVP模式
(4)觀察者模式
(5)其他模式
第五單元

函數(shù)重構(gòu)技能
該單元主要講解函數(shù)重構(gòu)。函數(shù)的重構(gòu)最主要的工作是函數(shù)抽取。
講授高質(zhì)量函數(shù)的標(biāo)準(zhǔn)和助手函數(shù)的概念。
最后介紹VS2008自帶的C#重構(gòu)工具,主要演示其中“提取方法”和“封裝字段”功能。

1、創(chuàng)建函數(shù)的理由
列舉多個(gè)創(chuàng)建函數(shù)的理由,避免程序中產(chǎn)生巨型函數(shù)。
2、高質(zhì)量函數(shù)的三原則
(1)單一抽象層次原則
(2)單一職責(zé)原則
(3)短小原則
3、助手函數(shù)
(1)定義
(2)好處
4、自動(dòng)化重構(gòu)工具
學(xué)習(xí)VS2008內(nèi)置的重構(gòu)工具。減少程序員抽取函數(shù)的工作量。
第六單元

函數(shù)內(nèi)部?jī)?yōu)化
在上一單元的基礎(chǔ)上,本單元主要講解如何通過(guò)優(yōu)化函數(shù)內(nèi)部的代碼,增加代碼的可讀性、可維護(hù)性。

1、為你的函數(shù)取個(gè)好名字
(1)一些基本原則
(2)檢查方法
2、簡(jiǎn)化表達(dá)式
(1)引入解釋性變量
(2)盡量少用邏輯非運(yùn)算符
3、馴服深層嵌套
(1)使用衛(wèi)語(yǔ)句
(2)用switch-case語(yǔ)句,代替if-els
(3)表驅(qū)動(dòng)法
4、消除魔鬼數(shù)字
5、優(yōu)化變量
(1)變量命名
(2)一個(gè)變量只做一件事
(3)控制變量的作用域
(4)縮短變量的存活時(shí)間
(5)減少控制標(biāo)記
6、優(yōu)化循環(huán)
(1)循環(huán)的種類
(2)循環(huán)的選擇
(3)循環(huán)的危險(xiǎn)性
(4)循環(huán)的重構(gòu)
7、縮短參數(shù)列表
第七單元

維護(hù)遺留系統(tǒng)
課程的最后,介紹在無(wú)自動(dòng)化測(cè)試用例保證的遺留系統(tǒng)中,如何進(jìn)行保護(hù)性的開(kāi)發(fā)和重構(gòu)工作。并提出維護(hù)代碼的準(zhǔn)則。

1、維護(hù)代碼的準(zhǔn)則
首先做到不傷害。
2、修改代碼的藝術(shù)
(1)新生方法
(2)新生類
(3)外敷方法
(4)外敷類
第八單元

架構(gòu)師的作用
1、設(shè)計(jì)者
(1)切分系統(tǒng)
(2)設(shè)計(jì)接口
(3)選用設(shè)計(jì)模式
2、教導(dǎo)者
(1)引導(dǎo)團(tuán)隊(duì)
(2)修正偏離
加強(qiáng)學(xué)習(xí)
第一單元

重構(gòu)的重要性

重構(gòu)管理
該單元內(nèi)容主要面向公司管理人員。
通過(guò)分析巨頭軟件公司在代碼維護(hù)上的失敗經(jīng)驗(yàn),讓管理者認(rèn)識(shí)到重構(gòu)工作的重要性。
并提出相應(yīng)的管理辦法。

1、開(kāi)發(fā)效率問(wèn)題
(1)大部分公司的現(xiàn)狀
(2)消失的巨頭公司
(3)代碼是怎么腐化變爛的
(4)代碼是債務(wù),而不是資產(chǎn)
2、償還債務(wù)的辦法――重構(gòu)與重寫(xiě)
(1)重構(gòu)與重新的區(qū)別
(2)為何要選擇重構(gòu)而不是重寫(xiě)?
3、重構(gòu)管理
(1)重新認(rèn)識(shí)代碼的內(nèi)部質(zhì)量
(2)重構(gòu)面臨的管理挑戰(zhàn)
重構(gòu)的推行策略與方式
第二單元

重構(gòu)對(duì)開(kāi)發(fā)人員的意義

重構(gòu)最佳實(shí)踐
從第二單元開(kāi)始,授課內(nèi)容面向程序員。
通過(guò)案例,展示糟糕代碼對(duì)程序員工作情緒的影響,讓程序員產(chǎn)生主動(dòng)重構(gòu)的動(dòng)力。
通過(guò)實(shí)戰(zhàn)訓(xùn)練操作,向程序員說(shuō)明重構(gòu)的最佳實(shí)踐步驟。
并在實(shí)戰(zhàn)訓(xùn)練的同時(shí),介紹幾個(gè)重構(gòu)相關(guān)工具的使用方法。

1、重構(gòu)――從程序員自己做起
(1)從中興的案例說(shuō)起
(2)寫(xiě)出好代碼的目的
(3)代碼是寫(xiě)給人讀的,而不是寫(xiě)給機(jī)器跑的
(4)讓營(yíng)地比你來(lái)時(shí)更干凈
2、重構(gòu)的最佳實(shí)踐
(1)覓取重構(gòu)點(diǎn)
(2)重構(gòu)代碼
(3)自動(dòng)化單元測(cè)試
3、重構(gòu)相關(guān)工具
(1)單元測(cè)試工具
(2)測(cè)試覆蓋率工具
(3)打樁工具
(4)自動(dòng)化重構(gòu)工具
(5)自動(dòng)化測(cè)試工具
第三單元

嗅出代碼的壞味道
介紹代碼的多種壞味道,為重構(gòu)點(diǎn)指明方向。
學(xué)習(xí)使用代碼內(nèi)部質(zhì)量檢測(cè)工具,讓覓取重構(gòu)點(diǎn)的工作工具化。
學(xué)習(xí)使用自動(dòng)化檢測(cè)工具,讓覓取重構(gòu)點(diǎn)的工作自動(dòng)化。

1、壞味道的分類
(1)重復(fù)的代碼
(2)含糊不清的命名
(3)方法相關(guān)的壞味道
(4)類相關(guān)的壞味道
(5)散彈式修改
(6)發(fā)散式變化
(7)不恰當(dāng)?shù)谋┞?br/>(8)過(guò)多的注釋
(9)其他壞味道
2、“鼻子”麻木了怎么辦
代碼內(nèi)部質(zhì)量檢測(cè)工具
3、沒(méi)時(shí)間檢測(cè)怎么辦
(1)自動(dòng)化的測(cè)試和告警工具
(2)自動(dòng)化檢測(cè)原理
第四單元

類重構(gòu)技能
講解創(chuàng)建類的目的。引申出對(duì)象職責(zé)的概念,并通過(guò)實(shí)戰(zhàn)訓(xùn)練講述職責(zé)劃分的技巧。
講授面向?qū)ο笤O(shè)計(jì)的5大設(shè)計(jì)原則。
詳細(xì)講解“單一職責(zé)原則”。
通過(guò)實(shí)戰(zhàn)訓(xùn)練,傳授“依賴倒置原則”的使用。

1、為什么需要封裝類
(1)設(shè)計(jì)“類”概念的目的
(2)良好模塊和糟糕模塊的區(qū)別
(3)最少知道原則
(4)封裝相關(guān)的壞味道
2、對(duì)象職責(zé)概念
(1)對(duì)象職責(zé)概論
(2)對(duì)象職責(zé)的劃分技巧
3、面向?qū)ο笤O(shè)計(jì)的5大設(shè)計(jì)原則
(1)單一職責(zé)原則
(2)開(kāi)閉原則
(3)里氏替換原則
(4)接口隔離原則
(5)依賴倒置原則
4、單一職責(zé)原則
(1)定義與案例
(2)職責(zé)的識(shí)別技巧
(3)職責(zé)相關(guān)的壞味道
5、依賴倒置原則
(1)定義
(2)案例
6、類重構(gòu)技巧
(1)提煉抽象
(2)打樁測(cè)試
(3)分離組件(6個(gè)組包原則)
(4)組件內(nèi)部?jī)?yōu)化
7、設(shè)計(jì)模式
(1)策略模式
(2)工廠模式
(3)MVP模式
(4)觀察者模式
(5)其他模式
第五單元

函數(shù)重構(gòu)技能
該單元主要講解函數(shù)重構(gòu)。函數(shù)的重構(gòu)最主要的工作是函數(shù)抽取。
講授高質(zhì)量函數(shù)的標(biāo)準(zhǔn)和助手函數(shù)的概念。
最后介紹VS2008自帶的C#重構(gòu)工具,主要演示其中“提取方法”和“封裝字段”功能。

1、創(chuàng)建函數(shù)的理由
列舉多個(gè)創(chuàng)建函數(shù)的理由,避免程序中產(chǎn)生巨型函數(shù)。
2、高質(zhì)量函數(shù)的三原則
(1)單一抽象層次原則
(2)單一職責(zé)原則
(3)短小原則
3、助手函數(shù)
(1)定義
(2)好處
4、自動(dòng)化重構(gòu)工具
學(xué)習(xí)VS2008內(nèi)置的重構(gòu)工具。減少程序員抽取函數(shù)的工作量。
第六單元

函數(shù)內(nèi)部?jī)?yōu)化
在上一單元的基礎(chǔ)上,本單元主要講解如何通過(guò)優(yōu)化函數(shù)內(nèi)部的代碼,增加代碼的可讀性、可維護(hù)性。

1、為你的函數(shù)取個(gè)好名字
(1)一些基本原則
(2)檢查方法
2、簡(jiǎn)化表達(dá)式
(1)引入解釋性變量
(2)盡量少用邏輯非運(yùn)算符
3、馴服深層嵌套
(1)使用衛(wèi)語(yǔ)句
(2)用switch-case語(yǔ)句,代替if-els
(3)表驅(qū)動(dòng)法
4、消除魔鬼數(shù)字
5、優(yōu)化變量
(1)變量命名
(2)一個(gè)變量只做一件事
(3)控制變量的作用域
(4)縮短變量的存活時(shí)間
(5)減少控制標(biāo)記
6、優(yōu)化循環(huán)
(1)循環(huán)的種類
(2)循環(huán)的選擇
(3)循環(huán)的危險(xiǎn)性
(4)循環(huán)的重構(gòu)
7、縮短參數(shù)列表
第七單元

維護(hù)遺留系統(tǒng)
課程的最后,介紹在無(wú)自動(dòng)化測(cè)試用例保證的遺留系統(tǒng)中,如何進(jìn)行保護(hù)性的開(kāi)發(fā)和重構(gòu)工作。并提出維護(hù)代碼的準(zhǔn)則。

1、維護(hù)代碼的準(zhǔn)則
首先做到不傷害。
2、修改代碼的藝術(shù)
(1)新生方法
(2)新生類
(3)外敷方法
(4)外敷類
第八單元

架構(gòu)師的作用
1、設(shè)計(jì)者
(1)切分系統(tǒng)
(2)設(shè)計(jì)接口
(3)選用設(shè)計(jì)模式
2、教導(dǎo)者
(1)引導(dǎo)團(tuán)隊(duì)
(2)修正偏離
加強(qiáng)學(xué)習(xí)

活動(dòng)詳情

提交需求