班級規(guī)模及環(huán)境--熱線:4008699035 手機:15921673576( 微信同號) |
每期人數(shù)限3到5人。 |
上課時間和地點 |
上課地點:【上海】:同濟大學(xué)(滬西)/新城金郡商務(wù)樓(11號線白銀路站) 【深圳分部】:電影大廈(地鐵一號線大劇院站)/深圳大學(xué)成教院 【北京分部】:北京中山學(xué)院/福鑫大樓 【南京分部】:金港大廈(和燕路) 【武漢分部】:佳源大廈(高新二路) 【成都分部】:領(lǐng)館區(qū)1號(中和大道) 【沈陽分部】:沈陽理工大學(xué)/六宅臻品 【鄭州分部】:鄭州大學(xué)/錦華大廈 【石家莊分部】:河北科技大學(xué)/瑞景大廈 【廣州分部】:廣糧大廈 【西安分部】:協(xié)同大廈
最近開課時間(周末班/連續(xù)班/晚班):2020年3月16日 |
實驗設(shè)備 |
☆資深工程師授課
☆注重質(zhì)量
☆邊講邊練
☆合格學(xué)員免費推薦工作
★實驗設(shè)備請點擊這兒查看★ |
質(zhì)量保障 |
1、培訓(xùn)過程中,如有部分內(nèi)容理解不透或消化不好,可免費在以后培訓(xùn)班中重聽;
2、培訓(xùn)結(jié)束后,授課老師留給學(xué)員聯(lián)系方式,保障培訓(xùn)效果,免費提供課后技術(shù)支持。
3、培訓(xùn)合格學(xué)員可享受免費推薦就業(yè)機會。 |
課程大綱 |
軟件代碼的新思維----代碼就是設(shè)計,代碼質(zhì)量決定軟件可維護性
軟件可維護性(為什么必須重視軟件的可維護性)
代碼質(zhì)量概述
破窗效應(yīng)
對代碼的重新認(rèn)識---代碼就是設(shè)計
優(yōu)秀代碼的評價標(biāo)準(zhǔn)
好代碼和糟糕代碼之間的區(qū)別
劣質(zhì)代碼的代價
大師評價整潔代碼的標(biāo)準(zhǔn)
Robert C Martin
Kent Beck`
Ward Cunningham
Ron Jeffries
Grady Booch
Dave Thomas
重構(gòu)思想
重構(gòu)概述
何時重構(gòu)
如何發(fā)現(xiàn)哪些地方需要重構(gòu)
如何保證重構(gòu)的正確
如何測試重構(gòu)
通過一個小案例演示重構(gòu)的基本思想(什么時間重構(gòu),如何發(fā)現(xiàn)重構(gòu)點,如何保證重構(gòu)的正確性,最后如何驗收)
案例—通過實際項目演示重構(gòu)
介紹項目需求情況,進行設(shè)計
閱讀代碼指出代碼壞癥狀
通過重構(gòu)逐步改善代碼質(zhì)量
關(guān)
注
代
碼
壞
味
道
重構(gòu)關(guān)鍵—發(fā)現(xiàn)代碼的壞味道?
代碼壞味道概述
代碼壞味道的分類
代碼壞味道----低級篇(重復(fù)的代碼、過長的函數(shù)、過大的類、過長的參數(shù)列表、發(fā)散式變化、分散的修改)
代碼壞味道----中級篇(偽面向?qū)ο蟮恼{(diào)用、數(shù)據(jù)泥團、基本類型的誤用、switch-case結(jié)構(gòu)的誤用、平行繼承體系、過薄的類、只有局部意義的成員變量)
代碼壞味道----高級篇(過度耦合的消息鏈、過薄的中間對象、緊耦合類、相似的類、只有數(shù)據(jù)的類、濫用類的繼承關(guān)系)
通過案例,讓學(xué)員尋找代碼壞味道
可以根據(jù)客戶現(xiàn)在的項目作為案例進行現(xiàn)場分析,找出相應(yīng)的代碼壞味道
某項目分析----重點了解現(xiàn)實項目代碼的充斥大量壞味道
介紹項目需求情況,閱讀現(xiàn)有代碼指出代碼壞癥狀
不看不知道,代碼到底有多爛—觸目驚心的代碼
通過重構(gòu)逐步改善代碼質(zhì)量
本案例學(xué)習(xí)多種重構(gòu)方式
重
構(gòu)
方
法
重構(gòu)技術(shù)
重構(gòu)名錄
介紹常見的重構(gòu)技術(shù)
分別通過相關(guān)案例展示重構(gòu)手段
重構(gòu)工具
重構(gòu)工具概述
使用IDE重構(gòu)工具進行重構(gòu)
重構(gòu)工具的使用標(biāo)準(zhǔn)
重構(gòu)工具的使用心得
通過案例演示如何通過重構(gòu)工具完成重構(gòu)
重構(gòu)案例—該案例重點??函數(shù)和函數(shù)調(diào)用重構(gòu)
函數(shù)的重構(gòu)
函數(shù)調(diào)用重構(gòu)
函數(shù)參數(shù)的重構(gòu)
重復(fù)代碼處理策略
通過案例介紹函數(shù)的重構(gòu)
重構(gòu)案例—該案例重點 復(fù)雜條件表達式重構(gòu)
復(fù)雜條件表達式重構(gòu)
IF/Else語句的危害
Switch語句的危害
通過案例介紹如何重構(gòu)面向過程代碼到面向?qū)ο?br>
重構(gòu)案例—該案例重點學(xué)習(xí)代碼格式和命名
代碼格式規(guī)范
代碼命名-名副其實
很重要,但是總被忽略的基本功
通過案例介紹代碼格式以及如何使用IDE工具進行定制格式
通過案例介紹代碼的命名,以及如何重構(gòu)
重構(gòu)案例—該案例重點 數(shù)據(jù)結(jié)構(gòu)重構(gòu)
數(shù)據(jù)結(jié)構(gòu)重構(gòu)
通過案例介紹如何重構(gòu)面向過程代碼到面向?qū)ο?br>
重構(gòu)案例—該案例重點 對象職責(zé)和對象重構(gòu)
過程化思維和面向?qū)ο笤O(shè)計
對象的重新思考
職責(zé)驅(qū)動的對象設(shè)計
通過案例介紹如何重構(gòu)面向過程代碼到面向?qū)ο?br>
重
構(gòu)
的
度
量
軟件質(zhì)量和代碼質(zhì)量
軟件質(zhì)量概述
代碼質(zhì)量的度量
Chidamber & Kemerer度量,
Depth of Inheritance Tree(DIT)
Number of Childre(NOC)
Response for a Class(RFC)
Afferent/Efferent Couplings(CA/CE)
Lack of cohesion in methods(LCOM)
業(yè)界其他度量標(biāo)準(zhǔn)
通過分析多個實際項目,分別度量相關(guān)是否標(biāo)準(zhǔn)
代碼評審和質(zhì)量抽查
代碼評審前期準(zhǔn)備
代碼評審的代碼量
代碼評審的檢查表
代碼評審的總結(jié)與學(xué)習(xí)
通過案例分析如何做好代碼評審
持
續(xù)
重
構(gòu)
代碼靜態(tài)分析工具
代碼靜態(tài)分析工具概述
以Java語言代碼靜態(tài)分析工具為例介紹
CheckStyle:用于編碼標(biāo)準(zhǔn)?
PMD 的 CPD:幫助發(fā)現(xiàn)代碼重復(fù)?
Coverlipse:測量代碼覆蓋率?
JDepend:提供依賴項分析?
Metric:有效地查出復(fù)雜度
其他語言相關(guān)代碼靜態(tài)分析工具
通過案例演示工具在項目之中的應(yīng)用
持續(xù)集成
持續(xù)集成概述
持續(xù)集成的要點和原則?
構(gòu)建策略和最佳實踐?
持續(xù)集成對代碼分析的支持
通過案例演示如何利用持續(xù)集成完成代碼檢查和代碼分析
設(shè)
計
重
構(gòu)
什么是好的設(shè)計以及如何預(yù)先設(shè)計實現(xiàn)?
什么是好的設(shè)計和衡量的手段
可擴展性(Extensibility)容易添加新的功能. 結(jié)合案例,通過那些手段如何實現(xiàn)該目標(biāo)
靈活性(Flexibility)代碼修改平穩(wěn)地發(fā)生. 結(jié)合案例,通過那些手段如何實現(xiàn)該目標(biāo)
可插入性(Pluggability)容易將一個類抽出去,同時將另一個有同樣接口的類加入進來. 結(jié)合案例,通過那些手段如何實現(xiàn)該目標(biāo)
軟件的變化分析---發(fā)現(xiàn)變化/封裝變化/隔離變化
分析真實項目,如何預(yù)先設(shè)計,給我們哪些啟示,我們可以學(xué)習(xí)到什么
重構(gòu)與設(shè)計----敏捷設(shè)計思想(演化式設(shè)計或者反思性設(shè)計)?
重構(gòu)與設(shè)計的思想---根據(jù)代碼壞味道改善設(shè)計
軟件需求不可預(yù)測性----設(shè)計師不可能進行預(yù)測式設(shè)計
軟件設(shè)計的重構(gòu)
軟件演化式設(shè)計---敏捷的設(shè)計思想
分析某電信項目,如何設(shè)計重構(gòu),給我們哪些啟示,我們可以學(xué)習(xí)到什么
通過代碼指標(biāo)進行設(shè)計重構(gòu)?
代碼指標(biāo)和可視化有助于識別代碼的重要部分,從而識別設(shè)計壞味道,進行重構(gòu)設(shè)計
相關(guān)代碼指標(biāo)(HIT 繼承樹的高度/NOP 包的數(shù)量/NOC 類的數(shù)量/NOM 方法的數(shù)量/LOC 代碼行數(shù)/CYCLO 圈復(fù)雜度/CALL 每個方法的調(diào)用數(shù))
分析案例主要討論兩個指標(biāo),圈復(fù)雜度(cyclomatic complexity) 和傳入耦合(afferent coupling), 介紹顯示和理解這兩個指標(biāo)的一些工具,以及如何通過組合指標(biāo)幫助發(fā)現(xiàn)設(shè)計特征。
重
構(gòu)
與
模
式
重構(gòu)到模式
軟件設(shè)計的基本原則
設(shè)計模式概述
設(shè)計模式的本質(zhì)論
設(shè)計模式如何適應(yīng)變化和封裝
重構(gòu)到模式的思路
案例---重點介紹重構(gòu)基本類型依賴和對應(yīng)模式
通過案例學(xué)習(xí)以下重構(gòu)到模式手段
以State取代狀態(tài)改變條件語句
以Strategy取代條件邏輯
以Composite取代隱含樹
以Interpreter取代隱式語言
轉(zhuǎn)移裝飾功能到Decorator
用Builder封裝Composite
重點學(xué)習(xí)案例的重構(gòu)到模式的過程
案例---重點介紹重構(gòu)代碼重復(fù)和對應(yīng)模式
通過案例學(xué)習(xí)以下重構(gòu)到模式手段
構(gòu)造Template Method
以Composite取代一/多之分
引入Null Object
用Adapter統(tǒng)一接口
用Fatory Method引入多態(tài)創(chuàng)建
重點學(xué)習(xí)案例的重構(gòu)到模式的過程
案例---重點介紹重構(gòu)代碼過長/過大的類/方法和對應(yīng)模式
轉(zhuǎn)移聚集操作到Vistor
以Strategy取代條件邏輯
以Command取代條件調(diào)度程序
轉(zhuǎn)移聚集操作到Collecting Parameter
重點學(xué)習(xí)案例的重構(gòu)到模式的過程
案例---重點介紹條件邏輯過度復(fù)雜和對應(yīng)模式
以Strategy取代條件邏輯
以State取代狀態(tài)改變條件語句
轉(zhuǎn)移裝飾功能到Decorator
引入Null Object
以Command替換條件調(diào)度程序
轉(zhuǎn)移聚集操作到Visitor?
重點學(xué)習(xí)案例的重構(gòu)到模式的過程
大型
項目
重構(gòu)
案例
分析
架構(gòu)重構(gòu)
軟件架構(gòu)概述
遺留系統(tǒng)的軟件架構(gòu)恢復(fù)
軟件架構(gòu)的重構(gòu)時機
軟件架構(gòu)的重構(gòu)步驟
架構(gòu)壞味道
架構(gòu)重構(gòu)策略
案例分析—某web網(wǎng)站架構(gòu)重構(gòu)
項目背景以及相關(guān)需求
軟件架構(gòu)的演進與重構(gòu)過程
質(zhì)量屬性對軟件架構(gòu)的驅(qū)動
架構(gòu)的可擴展性架構(gòu)
緩存技術(shù)在架構(gòu)之中的應(yīng)用
Web層的架構(gòu)策略
中間層的架構(gòu)和集群策略
大型并發(fā)系統(tǒng)Session的復(fù)制和容錯架構(gòu)策略
數(shù)據(jù)的架構(gòu)
軟件架構(gòu)的重構(gòu)策略
案例分析—某電信項目架構(gòu)重構(gòu)
介紹項目需求情況,進行設(shè)計
通過重構(gòu)逐步實現(xiàn)設(shè)計的可維護, 可重用
應(yīng)用管道與過濾器/元數(shù)據(jù)/微內(nèi)核等架構(gòu)模式
應(yīng)用AOP架構(gòu)思想
應(yīng)用設(shè)計模式(Command/ Observer/Proxy/Chain of Responsibility )?
通過案例學(xué)習(xí)架構(gòu)的重構(gòu)策略和步驟
|
|
|
|