代碼整潔之道-軟件高質(zhì)量代碼體系最佳實(shí)踐
主辦單位:上海普瑞思管理咨詢有限公司 上海創(chuàng)卓商務(wù)咨詢有限公司
日期地址:2015年03月19-20日 深圳
培訓(xùn)費(fèi)用:6800元/人(含培訓(xùn)費(fèi)、資料費(fèi)、午餐費(fèi)及茶點(diǎn)等)
你可以參加嗎?
各類軟件企業(yè)和研發(fā)中心的程序員、軟件設(shè)計(jì)師、架構(gòu)師,項(xiàng)目經(jīng)理,質(zhì)量部門員工。
1.如果你不重視代碼質(zhì)量,請(qǐng)不要參加.本課程面向重視代碼質(zhì)量的管理者.
2.如果你不認(rèn)為寫好代碼是一件重要,困難并且有趣的事情,請(qǐng)你不要參加.本課程面向追求卓越的程序員,我們認(rèn)為編程是一種態(tài)度.
3.如果你已經(jīng)多年不寫代碼,最好不要參加,本課程面向一線還在編程的程序員/設(shè)計(jì)師/架構(gòu)師
為什么需要該課程軟件質(zhì)量,不但依賴于架構(gòu),設(shè)計(jì)以及
項(xiàng)目管理,而且與代碼質(zhì)量緊密相關(guān).這一點(diǎn),無論你使用什么開發(fā)技術(shù),都不得不承認(rèn).代碼是程序員溝通最直接的手段,代碼是技術(shù)交流的手段,代碼是需求交流的途徑。重視代碼,回歸本源,曾經(jīng)我們遠(yuǎn)離代碼,談架構(gòu)設(shè)計(jì),談UML,談開發(fā)流程。如今我們落地,找回軟件的本源,徹徹底底看清代碼、深入思考代碼。那些一流的研發(fā)中心非常重視代碼,Facebook就有經(jīng)典的Codewinsarguments(代碼贏得爭(zhēng)論)。在Facebook做codereview時(shí)間大約占50%,管理者對(duì)代碼質(zhì)量負(fù)有一定責(zé)任。甚至代碼質(zhì)量高于一切:FacebookCodereview是重點(diǎn)
KPI考核的對(duì)象,實(shí)行連坐制,如果因?yàn)榇a質(zhì)量問題,那么產(chǎn)生的KPI責(zé)任包括領(lǐng)導(dǎo)30%、程序員50%、審核人員20%。但是我們的管理者經(jīng)常聽到開發(fā)人員這樣抱怨:“不能再增加功能了!我們得停下來重寫代碼。軟件代碼一團(tuán)糟,就像紙糊的老虎,根本應(yīng)付不了持續(xù)增加的用戶需求。我們實(shí)在維護(hù)不下去了!最好推倒重寫吧”這一幕在很多公司上演過,現(xiàn)在依然在不斷重演。一旦公司陷入這種困境,以前版本的開發(fā)者往往淪為替罪羊。新的開發(fā)者一般就會(huì)罵前人怎么寫這么爛的代碼。他們準(zhǔn)備推倒重來,準(zhǔn)備重寫系統(tǒng)。在重寫代碼的過程中,用戶無法看到產(chǎn)品的任何改進(jìn)。你可能認(rèn)為重寫代碼至多也就幾個(gè)月,但是實(shí)際花費(fèi)的時(shí)間無一例外要多得多。你只能坐在一旁,眼睜睜看著用戶投奔競(jìng)爭(zhēng)對(duì)手,而這個(gè)時(shí)候,競(jìng)爭(zhēng)對(duì)手恰恰在不斷地改進(jìn)產(chǎn)品。我們研發(fā)中心有一個(gè)理念”代碼是債務(wù)而不是資產(chǎn)”。最開始,團(tuán)隊(duì)會(huì)編寫代碼,做出產(chǎn)品,并用它來賺錢,但是,之后團(tuán)隊(duì)?wèi)?yīng)該盡可能地尋找減少代碼的方法和使代碼盡量整潔,從而降低成本。軟件界有一個(gè)真理,你擁有的代碼越多,維護(hù)代碼所要付出的成本就越高。如果你的代碼結(jié)構(gòu)越好,你做了越多的單元測(cè)試,你的代碼質(zhì)量越好、越小、耦合越松,那么添加新代碼所需要付出的成本就越少。因此大師CraigLarman說:“最好維護(hù)的代碼就是沒有代碼,好的程序員的代碼產(chǎn)量是負(fù)的,因?yàn)樗ㄟ^減少代碼來增加功能”。對(duì)比現(xiàn)實(shí)中,很多人以為,LOC(lineofcode)越多的feature越大,寫LOC越多的程序員越牛。這其實(shí)是極其錯(cuò)誤的觀念.因此我們必須有全面的管理制度讓我們保持代碼少而整潔。所以MichaelFeathers認(rèn)為"未來屬于知道如何有策略地刪除代碼的公司”。持有代碼的成本要比我們想象的大。意識(shí)到這一點(diǎn)的公司更具有競(jìng)爭(zhēng)優(yōu)勢(shì)。為了切實(shí)幫助軟件企業(yè)降低企業(yè)項(xiàng)目開發(fā)成本,大面積提高軟件工程師編程能力和代碼質(zhì)量管理能力,我們特別推出實(shí)戰(zhàn)訓(xùn)練營(yíng).分享多家大型研發(fā)中心代碼管理經(jīng)驗(yàn)給大家.該課程適應(yīng)于各個(gè)階段的技術(shù)人員.初級(jí)工程師能夠透過大師的眼睛來看待編程,了解編程的價(jià)值觀和原則;具有豐富經(jīng)驗(yàn)的設(shè)計(jì)師和架構(gòu)師可以通過實(shí)現(xiàn)模式進(jìn)行反思,探究成功實(shí)踐背后的意義.把價(jià)值觀,原則和開發(fā)實(shí)踐結(jié)合;管理者通過學(xué)習(xí)業(yè)界著名研發(fā)中心的管理經(jīng)驗(yàn)和失敗的教訓(xùn),來制定自己公司的代碼管理策略.質(zhì)量管理相關(guān)人員學(xué)習(xí)如何定制代碼質(zhì)量指標(biāo),通過哪些工具進(jìn)行監(jiān)控,怎樣管理代碼質(zhì)量。
誰已經(jīng)選擇了我們的咨詢和培訓(xùn)?我們已經(jīng)為幾十家企業(yè)提供了多次培訓(xùn)和咨詢服務(wù),以下企業(yè)已經(jīng)選擇了我們的內(nèi)訓(xùn)課程
1.互聯(lián)網(wǎng)研發(fā)企業(yè),比如百度研發(fā)中心4次,阿里巴巴
2.電信研發(fā)企業(yè),比如思科研發(fā)中心5次,阿爾卡特-朗訊研發(fā)中心11次,
華為研發(fā)中心,摩托羅拉研發(fā)中心1次,大唐電信研發(fā)1次,廣州從興電子,億陽通信1次,愛立信研發(fā)中心,
3.廣電行業(yè):廣州誠毅科技研發(fā)中心,
4.企業(yè)軟件研發(fā)企業(yè),比如Adobe中國(guó)研發(fā)中心,北京久其研發(fā)中心,博古中國(guó)研發(fā)中心,金蝶深圳研發(fā)中心
5.嵌入式軟件企業(yè),比如阿爾卑斯中國(guó)研發(fā)中心,德國(guó)M&MSoftware,西門子研發(fā)中心,Sony研發(fā)中心,金立智能研究院,南車研發(fā)中心,德塞西威,霍尼韋爾研發(fā)中心
6.外包類企業(yè),聯(lián)盟計(jì)算機(jī)服務(wù)(天津)有限公司ACS3次。
7.金融行業(yè):恒生電子,華騰,中國(guó)人民銀行研發(fā)中心,工商行研發(fā)中心,平安科技研發(fā)中心,建行研發(fā)中心,深圳登記結(jié)算研發(fā)中心,花旗銀行中國(guó)研發(fā)中心
我們已經(jīng)為幾十期公開課,已經(jīng)有100多家企業(yè)已經(jīng)選擇了我們的公開課程騰訊(深圳)有限公司,EMC中國(guó)研發(fā)中心,華為終端有限公司、斯倫貝謝技術(shù),通用電氣醫(yī)療系統(tǒng)(中國(guó))有限公司,華為技術(shù)有限公司,廣州從興電子開發(fā)有限公司、福建星網(wǎng)銳捷股份有限公司,廣州菲特網(wǎng)絡(luò)科技有限公司,盛立金融(杭州)軟件公司,索尼中國(guó)研發(fā)中心,愛德萬,上海金慧軟件有限公司,珠海世紀(jì)鼎利通信科技股份,蘭吉爾儀表系統(tǒng)有限公司,珠海飛企軟件有限公司,廣東佳和通信技術(shù)有限公司,珠海一多監(jiān)測(cè)科技有限公司,遠(yuǎn)光軟件股份有限公司
你的角色和收獲
課程根據(jù)著名編程大師的理論:編程是一種態(tài)度,編程是一種技藝,編程是一種習(xí)慣。面向以下不同的人群,有不同收獲。
技術(shù)負(fù)責(zé)人/技術(shù)總監(jiān)---1.了解業(yè)內(nèi)先進(jìn)的代碼審查的形式、技術(shù)、技巧和流程的成功經(jīng)驗(yàn),優(yōu)化現(xiàn)有開發(fā)中心代碼審核方法;
2.掌握業(yè)內(nèi)成熟的自動(dòng)化審核審查工具及方法,提升開發(fā)人員在代碼結(jié)構(gòu)分析、代碼質(zhì)量度量、代碼覆蓋率分析等方面的能力,并有效運(yùn)用到項(xiàng)目研發(fā)工作中。
項(xiàng)目經(jīng)理/項(xiàng)目管理人員/架構(gòu)師---1.學(xué)習(xí)其他研發(fā)機(jī)構(gòu)的代碼管理思想
2.代碼管理手段
3.代碼管理相關(guān)流程和相關(guān)工具
4.代碼監(jiān)控
測(cè)試部門/質(zhì)量管理部門---1.代碼審查
2.代碼檢查列表
3.代碼管理手段
4.代碼管理制度的建立
資深開發(fā)人員---1.掌握代碼編碼規(guī)范、代碼評(píng)審要點(diǎn)等知識(shí),引導(dǎo)開發(fā)人員養(yǎng)成正確的代碼編寫習(xí)慣;
2.編程技藝和相關(guān)編程實(shí)踐
3.重構(gòu)手段
一般開發(fā)人員---1.編程技藝和相關(guān)編程實(shí)踐
2.重構(gòu)手段
3.代碼壞味道
課程內(nèi)容
第一篇:編程是一種態(tài)度-------價(jià)值觀
第1單元代碼就是債務(wù)
內(nèi)容一:代碼是債務(wù)
1.代碼的認(rèn)識(shí)---代碼就是債務(wù)
2.代碼是債務(wù),越少越好
3.你擁有的代碼越多,添加新內(nèi)容所要付出的成本就越高
4.通過案例分析讓代碼庫盡可能小的方法:
5.通過國(guó)際研發(fā)中心電信計(jì)費(fèi)系統(tǒng)演示代碼是債務(wù)的思想,10多年國(guó)外
研發(fā)團(tuán)隊(duì)設(shè)計(jì)與研發(fā)第一版本,目前幾百人在維護(hù)
通過項(xiàng)目演示通過重構(gòu)如何減少了一半的代碼,維護(hù)的人員的減少
項(xiàng)目的失敗可能歸咎于各種各樣的原因。一些項(xiàng)目因糟糕的需求而失敗,另一些則由于錢和時(shí)間超支了,還有少數(shù)單純是因?yàn)樵愀獾墓芾硭?。如果我們探究其根本原因,是否?huì)發(fā)現(xiàn)所有項(xiàng)目失敗的罪魁禍?zhǔn)资窃愀獾拇a呢?
Bob大叔堅(jiān)信糟糕的代碼所帶來的成本之大足夠讓一個(gè)項(xiàng)目失敗。
內(nèi)容二:軟件界要以新視角看待代碼
1.傳統(tǒng)的軟件工程對(duì)代碼的錯(cuò)誤認(rèn)識(shí)
2.代碼的兩面性,代碼的靜態(tài)結(jié)構(gòu)和運(yùn)行時(shí)行為
3.客戶和管理者往往僅僅關(guān)注代碼的運(yùn)行時(shí)的行為
4.溫伯格認(rèn)為的主管必須關(guān)注代碼
5.軟件設(shè)計(jì)與代碼的關(guān)系—真正好的設(shè)計(jì)是在編碼階段一步一步而形成的,通過案例分析,設(shè)計(jì)如何根據(jù)代碼進(jìn)行演化
6.編程真的是簡(jiǎn)單的勞動(dòng)嗎?
7.通過多家項(xiàng)目案例進(jìn)行分析,傳統(tǒng)思想對(duì)代碼的種種誤解,我們提出了從3種新的角度來觀察代碼,
1)從管理者的角度,我們僅僅觀察代碼的運(yùn)行時(shí)行為,導(dǎo)致代碼的靜態(tài)結(jié)構(gòu)混亂的根源。這就是代碼的冰山原理,大量垃圾代碼隱藏在冰山之下。
3)程序員的視角,編程真的很難,通過某一個(gè)項(xiàng)目案例分析,20多人一周的工作量就為幾行代碼問題
第2單元編程價(jià)值觀
內(nèi)容一:編程價(jià)值觀
1.編程的方法學(xué)
2.什么是好的代碼,我們卻認(rèn)為“Goodcodeisnotbadcode!”
3.編程價(jià)值觀---溝通,簡(jiǎn)單,靈活
4.價(jià)值觀決定行為
5.優(yōu)秀代碼的評(píng)價(jià)標(biāo)準(zhǔn),什么是高質(zhì)量編碼?特征是什么?
6.軟件代碼的可讀性
7.代碼的可擴(kuò)展性
8.糟糕代碼的特征
9.劣質(zhì)代碼的代價(jià)
11.通過大量項(xiàng)目案例分析,什么是好的代碼,對(duì)好代碼新的認(rèn)識(shí)
第二篇:編程是一種技藝-------實(shí)踐篇
第3單元高質(zhì)量函數(shù)
內(nèi)容一:高質(zhì)量函數(shù)/過程
1.為什么需要函數(shù)
2.函數(shù)復(fù)雜度度量
3.函數(shù)圈復(fù)雜度以及度量
4.函數(shù)抽象層次-單一抽象層次原則SLAP(SingleLevelofAbstrctionPrinciple)
5.函數(shù)實(shí)現(xiàn)模式之—組合函數(shù)(ComposedMethod)
6.萬惡之源—函數(shù)過長(zhǎng)
7.函數(shù)的單一職責(zé)
8.函數(shù)第一原則:是要短小,函數(shù)第二原則:是還要短小,函數(shù)第三原則:是必須短小
9.函數(shù)重構(gòu)之道—抽取方法(ExtractMethod)和抽取對(duì)象函數(shù)
10.函數(shù)命名—怎樣取好的函數(shù)名
11.通過大量項(xiàng)目代碼分析,函數(shù)的遇到的各種問題,如何編程高質(zhì)量函數(shù)
內(nèi)容二:函數(shù)易理解與溝通
1.函數(shù)主體流
2.函數(shù)的異常處理
3.函數(shù)主題流程簡(jiǎn)化方法1-助手方法
4.助手方法的應(yīng)用場(chǎng)景
5.助手方法的效果
6.函數(shù)主題流程簡(jiǎn)化方法2-函數(shù)對(duì)象(MethodObject)
7.通過真實(shí)項(xiàng)目代碼進(jìn)行分析,如果提高代碼的可讀性
內(nèi)容三:函數(shù)靈活/易可擴(kuò)展---函數(shù)接縫
1.歷史遺留代碼維護(hù)問題
2.某電信研發(fā)中心的維護(hù)問題—開發(fā)維護(hù)的效率問題。
3.增加一個(gè)功能特性的成本并不單單是為這些功能編碼所花費(fèi)時(shí)間的成本,還應(yīng)該包括特性擴(kuò)展的障礙成本。
4.代碼的可維護(hù)成本分析—通過大量案例分析
1)確定需要修改哪些部分有多難
2)必要的改動(dòng)有多少
3)實(shí)現(xiàn)改動(dòng)對(duì)系統(tǒng)其他部分的影響有多大
5.如何實(shí)現(xiàn)代碼的易擴(kuò)展—函數(shù)接縫
6.接縫(seam),指程序中的一些特殊的點(diǎn),在這些點(diǎn)上你無需做任何修改就可以達(dá)到改動(dòng)程序行為的目的
7.通過案例分析,如何實(shí)現(xiàn)函數(shù)的靈活/易擴(kuò)展。
內(nèi)容四:函數(shù)參數(shù)
1.函數(shù)參數(shù)過長(zhǎng)
2.最理想的參數(shù)數(shù)量是零,其次是一,再次是二,有足夠的理由才能使用三個(gè)以上參數(shù).
3.函數(shù)參數(shù)重構(gòu)之道-引入?yún)?shù)對(duì)象(introduceparameterobject
4.函數(shù)參數(shù)的順序.
5.不要把程序參數(shù)當(dāng)做工作變量/臨時(shí)變量
6.函數(shù)參數(shù)模式-collectingparameter
7.函數(shù)返回值
8.通過大量項(xiàng)目代碼是函數(shù)參數(shù)問題
9.演示函參數(shù)的重構(gòu)
內(nèi)容五:變量
1.“一旦了解在程序設(shè)計(jì)中如何使用變量,他就掌握了程序設(shè)計(jì)的精華。”-Dijkstra
2.為什么需要變量—變量的引入的理由
3.單一變量用途
4.變量與方法
5.變量作用域
6.變量聲明與初始化
7.通過案例分析,函數(shù)的變量如何處理與控制。
內(nèi)容六:函數(shù)代碼重復(fù)
1.重復(fù)的危害
2.強(qiáng)加的重復(fù)/無意的重復(fù)/無耐心的重復(fù)/開發(fā)者之間的重復(fù)
3.不要重復(fù)自己DRY—Don"tRepeatYourselfPrinciple
4.MakeItEasytoReuse(讓復(fù)用變得容易)
5.魔法數(shù)(Magicnumber)
6.重復(fù)性代碼(DuplicatedCode)
7.接口不同的相似類(AlternativeClasseswithDifferentInterfaces)
8.系統(tǒng)分離關(guān)注點(diǎn)
9.系統(tǒng)架構(gòu)的基礎(chǔ)通用服務(wù)組件
10.通過某項(xiàng)目代碼是介紹重復(fù)編碼問題
11.演示研發(fā)過程之中的常見重復(fù)問題,以及如何解決
內(nèi)容七:條件表達(dá)式
1.復(fù)雜表達(dá)式的簡(jiǎn)化
2.IF/ELSE語句應(yīng)該如何編寫
3.Switch/Case語句應(yīng)該如何編寫
4.復(fù)雜條件表示式的危害
5.過分深層的縮進(jìn),或者“嵌套”,已經(jīng)困擾了計(jì)算機(jī)界達(dá)25年之久,并且至今仍然是產(chǎn)生混亂代碼的罪魁禍?zhǔn)字?br />
6.復(fù)雜表達(dá)式重構(gòu)之道—引入解釋變量/分解條件/抽取方法計(jì)算條件
7.表驅(qū)動(dòng)法-多級(jí)嵌套IF語句的必然之道
8.表驅(qū)動(dòng)法使用總則
9.某保險(xiǎn)項(xiàng)目表驅(qū)動(dòng)法應(yīng)用案例分析
10.通過大量項(xiàng)目代碼演示條件表達(dá)式編碼問題
11.復(fù)雜表達(dá)式的注意事項(xiàng),如何解決
內(nèi)容八:利用多態(tài)解決復(fù)雜表達(dá)式
1.面向?qū)ο蠖鄳B(tài)技術(shù)的新認(rèn)識(shí)
2.減少使用if語句,重構(gòu)到多態(tài)
3.以State/Strategy取代類型代碼
4.引入NullObject
5.以Command替換條件調(diào)度程序
6.轉(zhuǎn)移聚集操作到Visitor
7.轉(zhuǎn)移裝飾功能到Decorator
8.通過大量項(xiàng)目代碼演示多態(tài)可以解決的編程問題
內(nèi)容九:函數(shù)組織
1.盡管組織直線代碼是一個(gè)相當(dāng)簡(jiǎn)單的任務(wù),代碼結(jié)構(gòu)上的不合理會(huì)對(duì)代碼的質(zhì)量,正確性,可讀性和可維護(hù)性帶來影響。
2.把函數(shù)代碼分成“段落”
3.選擇一個(gè)有意義的順序,始終一致的使用它
4.應(yīng)該把代碼組織得一次只做一件事情
5.組織直線型代碼。嵌套可以,但是不應(yīng)該交疊
6.系統(tǒng)應(yīng)該由許多短小的函數(shù)而不是少量巨大的大函數(shù)組成!
7.系統(tǒng)應(yīng)該由許多短小的類而不是少量巨大的大類組成!
8.把子程序提取另一個(gè)程序,不會(huì)降低整個(gè)程序的復(fù)雜度,只是把決策點(diǎn)轉(zhuǎn)移到其他地方。
9.但是可以降低你在同一時(shí)間必須關(guān)注的復(fù)雜度水平。重點(diǎn)是要降低你需要在頭腦中同時(shí)考慮的項(xiàng)目的數(shù)量,所以一個(gè)給定子程序的復(fù)雜度是有價(jià)值的。
10.通過大量真實(shí)案例的代碼進(jìn)行分析函數(shù)的代碼的組織技術(shù)
內(nèi)容十:函數(shù)的錯(cuò)誤處理和異常管理
1.函數(shù)的錯(cuò)誤處理
2.使用異常而非返回碼
3.依賴磁鐵(Dependenymagent)
4.主體流-明確表達(dá)控制流的主體
5.異常流-盡可能清晰地表達(dá)異??刂屏?,而不干擾對(duì)主體流的表達(dá)
6.標(biāo)準(zhǔn)的異常處理9種方法
7.通過大量真實(shí)案例的代碼進(jìn)行分析函數(shù)的錯(cuò)誤處理和異常處理
第4單元高質(zhì)量類
內(nèi)容一:高質(zhì)量類
1.類的基礎(chǔ):抽象數(shù)據(jù)類
2.需要用到ADT的場(chǎng)景
3.使用ADT的益處
4.基本類型依賴壞味道
5.數(shù)據(jù)泥團(tuán)壞味道
6.案例—通過電信項(xiàng)目介紹數(shù)據(jù)的抽象
7.通過大量項(xiàng)目代碼演示數(shù)據(jù)抽象類型解決的問題
內(nèi)容二:面向?qū)ο笤O(shè)計(jì)----職責(zé)分配
1.單一職責(zé)原則
2.RDD-職責(zé)驅(qū)動(dòng)的面向?qū)ο笤O(shè)計(jì)方法
3.上帝類,代碼之中的大量的上帝類
4.通過案例分析,如何進(jìn)行設(shè)計(jì)高質(zhì)量類和重構(gòu)
內(nèi)容三:面向?qū)ο蟮木幊?br />
1.上帝類/過大的類--違反單一職責(zé)
2.依戀情結(jié)-一個(gè)方法視乎過于強(qiáng)調(diào)處理其他類的數(shù)據(jù),而不是處理自己的數(shù)據(jù)
3.發(fā)散式改變
4.散彈式修改
5.消息鏈
6.中間人
7.不當(dāng)?shù)木o密性
8.案例—通過電信項(xiàng)目介紹OOP
第5單元單元測(cè)試與代碼可測(cè)試性
內(nèi)容一:?jiǎn)卧獪y(cè)試
1.單元測(cè)試基本知識(shí)
2.單元測(cè)試框架提供了什么功能
3.好的測(cè)試是什么樣子的
4.為什么要寫單元測(cè)試,為什么不寫單元測(cè)試
5.為什么要寫"好"的單元測(cè)試
6.通過案例分析單元測(cè)試的基本概念,以及如何評(píng)價(jià)好的單元測(cè)試,單元測(cè)試為價(jià)值。
內(nèi)容二:編寫可測(cè)試代碼
1.如何編寫可信賴的測(cè)試
2.如何編寫可維護(hù)性的測(cè)試
3.如何編寫可讀的測(cè)試
4.測(cè)試代碼的重構(gòu)
5.通過大量真實(shí)項(xiàng)目案例分析如何編寫可測(cè)試性代碼
第三篇:編程是一種習(xí)慣-------管理篇
第6單元代碼重構(gòu)
內(nèi)容一:代碼重構(gòu)
1.重構(gòu)必然性
2.破窗效應(yīng)與技術(shù)債務(wù)
3.實(shí)際重構(gòu)遇到的4大問題
4.介紹常見的重構(gòu)技術(shù)
5.重構(gòu)到模式的目錄
6.通過多個(gè)案例分析,重構(gòu)面臨的問題和解決之道
第7單元修改遺留系統(tǒng)代碼
內(nèi)容一:修改遺留項(xiàng)目代碼
1.必須修改遺留的代碼起因
2.遺留代碼修改危險(xiǎn)事項(xiàng)
3.如何對(duì)依賴代碼做測(cè)試
4.依賴代碼的感知與分離
5.依賴代碼修改的接縫技術(shù)
6.修改依賴代碼的工具
7.降低風(fēng)險(xiǎn)的措施
8.接依賴技術(shù)
9.通過多個(gè)大型項(xiàng)目案例分析,如何修改遺留代碼,分析如何解耦
內(nèi)容二:拒絕退化-如何修改遺留系統(tǒng),而不破壞現(xiàn)有系統(tǒng)結(jié)構(gòu)
1.拒絕退化—“首先不要傷害”
2.SproutMethod
3.SproutClass
4.WrapMethod
5.WrapMethod
6.通過案例分析,如何修改遺留代碼,而不破壞現(xiàn)有系統(tǒng)代碼結(jié)構(gòu)
第8單元代碼質(zhì)量體系最佳實(shí)踐
內(nèi)容一:代碼質(zhì)量管理4個(gè)現(xiàn)代化
1.代碼管理的4個(gè)現(xiàn)代化
1)質(zhì)量量化(如何設(shè)置質(zhì)量指標(biāo))
2)工具化(如何尋找合適的工具
3)自動(dòng)化(把流程自動(dòng)化,忘記流程)
4)持續(xù)優(yōu)化(反思與優(yōu)化)
2.多家電信研發(fā)中心,如何實(shí)現(xiàn)4個(gè)代碼現(xiàn)代化
內(nèi)容二:代碼靜態(tài)分析工具
1.代碼靜態(tài)分析工具概述
2.以Java語言代碼靜態(tài)分析工具為例介紹,該內(nèi)容的思想仍然適合其他語言
1)Sonar集成平臺(tái)
2)CheckStyle:用于編碼標(biāo)準(zhǔn)
3)PMD的CPD:幫助發(fā)現(xiàn)代碼重復(fù)
4)Coverlipse:測(cè)量代碼覆蓋率
5)JDepend:提供依賴項(xiàng)分析
6)Metric:有效地查出復(fù)雜度
7)其他語言相關(guān)代碼靜態(tài)分析工具
3.通過案例演示工具在項(xiàng)目之中的應(yīng)用
內(nèi)容三:代碼評(píng)審代碼結(jié)構(gòu)分析、代碼質(zhì)量度量、代碼覆蓋率分析方法,代碼審查的形式、技術(shù)、技巧和流程,在代碼評(píng)審環(huán)節(jié)有效發(fā)現(xiàn)代碼隱藏問題,代碼評(píng)審具體方法和審核的具體內(nèi)容,審核效果分析,代碼評(píng)審工作的組織結(jié)構(gòu)設(shè)計(jì),組織內(nèi)人員工作安排;
1.代碼評(píng)審前期準(zhǔn)備
2.代碼評(píng)審的代碼量
3.代碼評(píng)審的檢查表
4.代碼評(píng)審的總結(jié)與學(xué)習(xí)
內(nèi)容四:代碼質(zhì)量管理體系
1.結(jié)合國(guó)內(nèi)多家研發(fā)中心的代碼管理經(jīng)驗(yàn)分享
2.代碼質(zhì)量體系的建立
演講嘉賓:劉捷-曾任職BEA(中國(guó))資深軟件架構(gòu)師
曾任職BEA(中國(guó))資深軟件架構(gòu)師,十余年的企業(yè)軟件架構(gòu)、開發(fā)和管理經(jīng)驗(yàn),側(cè)重于企業(yè)應(yīng)用軟件架構(gòu)設(shè)計(jì).主要負(fù)責(zé)客戶大型項(xiàng)目的架構(gòu)設(shè)計(jì)和研發(fā)。作為技術(shù)專家保證項(xiàng)目的成功實(shí)施,運(yùn)行和維護(hù)。參加過全國(guó)/全省多個(gè)大型的計(jì)算機(jī)應(yīng)用項(xiàng)目,擅長(zhǎng)的領(lǐng)域包括電信,金融、稅務(wù),大型互聯(lián)網(wǎng)web2.0應(yīng)用等。此前就職于IBM,任軟件架構(gòu)師。在此之前曾任日本東京一家軟件企業(yè)的資深技術(shù)顧問。
在線報(bào)名