版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、代碼整潔之道-卓越軟件代碼質(zhì)量體系最佳實(shí)踐課程簡介:管理者最擔(dān)心聽到開發(fā)人員這樣抱怨:“不能再增加功能了!我們得停下來重寫代碼。代碼庫一團(tuán)糟就像紙糊的老虎,根本應(yīng)付不了持續(xù)增加的用戶。我們維護(hù)不下去了!”這一幕在很多公司上演過,現(xiàn)在依然在不斷重演。一旦公司陷入這種困境,以前版本的開發(fā)者往往淪為替罪羊。新的開發(fā)者一般就會罵前人怎么寫這么爛的代碼。他們準(zhǔn)備推倒重來,準(zhǔn)備重寫系統(tǒng)。在重寫代碼的過程中,用戶無法看到產(chǎn)品的任何改進(jìn)。你可能認(rèn)為重寫代碼至多也就幾個月,但是實(shí)際花費(fèi)的時間無一例外要多得多。你只能坐在一旁,眼睜睜看著用戶投奔競爭對手,而這個時候,競爭對手恰恰在不斷地改進(jìn)產(chǎn)品。因此我們認(rèn)為軟件質(zhì)
2、量,不但依賴于架構(gòu)及項(xiàng)目管理,而且與代碼質(zhì)量緊密相關(guān)。這一點(diǎn),無論是敏捷開發(fā)流派還是傳統(tǒng)開發(fā)流派,都不得不承認(rèn)。干凈整潔的代碼,既在質(zhì)量上較為可靠,也為后期維護(hù)、升級,架構(gòu)演進(jìn)奠定了良好基礎(chǔ)。在最近幾年的業(yè)界,大家都把精力花費(fèi)在了軟件需求,架構(gòu),過程和管理等,反而代碼構(gòu)建這個與軟件開發(fā)骨肉相連的環(huán)節(jié)反而被忽視了.我們認(rèn)為”代碼是債務(wù)而不是資產(chǎn)”。最開始,團(tuán)隊(duì)會編寫代碼,做出產(chǎn)品,并用它來賺錢,但是,之后團(tuán)隊(duì)?wèi)?yīng)該盡可能地尋找減少代碼的方法和使代碼盡量整潔,從而降低成本。軟件界有一個真理,你擁有的代碼越多,添加新內(nèi)容所要付出的成本就越高。更壞的情況是,你所添加的所有內(nèi)容都會堆在代碼的頂端,接下來要
3、添加內(nèi)容的時候會成本會更高。如果你的代碼結(jié)構(gòu)越好,你做了越多的單元測試,你使用的數(shù)據(jù)庫模式越好、越小、耦合越松,那么添加新代碼所需要付出的成本就越少。因此OOP大師CraigLarman:“最好維護(hù)的代碼就是沒有代碼,好的程序員的代碼產(chǎn)量是負(fù)的,因?yàn)樗ㄟ^減少代碼來增加功能”對比現(xiàn)實(shí)中,很多人以為,LOC(lineofcode)越多的feature越大,寫LOC越多的程序員越牛。這其實(shí)是極其錯誤的觀念因此我們必須有全面的管理制度讓我們保持代碼少而整潔。所以軟件大師MichaelFeathers認(rèn)為未來屬于知道如何有策略地刪除代碼的公司”。持有代碼的成本要比我們想象的大。意識到這一點(diǎn)的公司更具有
4、競爭優(yōu)勢。為了切實(shí)幫助軟件企業(yè)降低企業(yè)項(xiàng)目開發(fā)成本,大面積提高軟件工程師編程能力和代碼質(zhì)量管理能力,我們特別推出了實(shí)戰(zhàn)訓(xùn)練營.分享多家大型研發(fā)中心代碼管理經(jīng)驗(yàn)給大家。該課程適應(yīng)于各個階段的開發(fā)群體初級工程師能夠透過大師的眼睛來看待編程,了解編程的價值觀和原則;具有豐富經(jīng)驗(yàn)的設(shè)計(jì)師和架構(gòu)師可以通過模式進(jìn)行反思,探究成功實(shí)踐背后的意義把價值觀,原則和開發(fā)實(shí)踐結(jié)合;管理者通過學(xué)習(xí)業(yè)界著名研發(fā)中心的管理經(jīng)驗(yàn)和失敗的教訓(xùn),來制定自己公司的代碼管理策略。培訓(xùn)講師:劉捷曾任中國專業(yè)服務(wù)部高級技術(shù)顧問年加入中國區(qū)專業(yè)服務(wù)部,任高級技術(shù)顧問,主要負(fù)責(zé)客戶項(xiàng)目的架構(gòu)設(shè)計(jì)和項(xiàng)目開發(fā),技術(shù)支持。保證項(xiàng)目的成功實(shí)施,運(yùn)
5、行,維護(hù)。參加過全省、全國多個大型的計(jì)算機(jī)應(yīng)用項(xiàng)目,設(shè)計(jì)的領(lǐng)域包括電信,銀行、稅務(wù),社保等等。技術(shù)能力:DB,UNIX,J2EE,SOA,WebLogicServer,WebLogicIntegration,WebLogicPortal相關(guān)的架構(gòu)設(shè)計(jì)。Dayl第1單元代碼就是債務(wù)第2單元編程價值觀Day2第3單元高質(zhì)量函數(shù)第一篇:編程是一種態(tài)度編程價值觀內(nèi)容一:代碼是債務(wù)-代碼的認(rèn)識代碼就是債務(wù)-代碼是債務(wù),越少越好-你擁有的代碼越多,添加新內(nèi)容所要付出的成本就越高-通過案例分析讓代碼庫盡可能小的方法:盡可能創(chuàng)建通用的工具。刪除不用的代碼或者特性。確保項(xiàng)目模塊化,并分割成相互沒有關(guān)聯(lián)的子項(xiàng)目。
6、熟悉你經(jīng)常使用的代碼庫。對代碼庫的規(guī)模時刻保持警惕,保持它是小而敏捷的。通過國際研發(fā)中心電信計(jì)費(fèi)系統(tǒng)演示代碼是債務(wù)的思想,10多年國外研發(fā)團(tuán)隊(duì)設(shè)計(jì)與研發(fā)第一版本,目前幾百人在維護(hù)通過項(xiàng)目演示通過重構(gòu)如何減少了一半的代碼,維護(hù)的人員的減少項(xiàng)目的失敗可能歸咎于各種各樣的原因。一些項(xiàng)目因糟糕的需求而失敗,另一些則由于錢和時間超支了,還有少數(shù)單純是因?yàn)樵愀獾墓芾硭?。如果我們探究其根本原因,是否會發(fā)現(xiàn)所有項(xiàng)目失敗的罪魁禍?zhǔn)资窃愀獾拇a呢?Bob大叔堅(jiān)信糟糕的代碼所帶來的成本之大足夠讓一個項(xiàng)目失敗。內(nèi)容一:編程價值觀編程的方法學(xué)編程價值觀-溝通,簡單,靈活優(yōu)秀代碼的評價標(biāo)準(zhǔn),什么是高質(zhì)量編碼?特征是什么
7、?軟件代碼的可讀性代碼的可擴(kuò)展性糟糕代碼的特征劣質(zhì)代碼的代價大師評價整潔代碼的標(biāo)準(zhǔn)通過某項(xiàng)目代碼是演示糟糕的代碼,以及經(jīng)過重構(gòu)之后的代碼,進(jìn)行對此.第二篇:編程是一種技藝編程實(shí)踐篇內(nèi)容一:高質(zhì)量函數(shù)/過程為什么需要函數(shù)函數(shù)復(fù)雜度度量函數(shù)圈復(fù)雜度以及度量函數(shù)抽象層次-單一抽象層次原則SLAP(SingleLevelofAbstrctionPrinciple)函數(shù)實(shí)現(xiàn)模式之組合函數(shù)(ComposedMethod)萬惡之源函數(shù)過長函數(shù)第一原則:是要短小,函數(shù)第二原則:是還要短小,函數(shù)第三原則:是必須短小函數(shù)重構(gòu)之道抽取方法(ExtractMethod)和抽取對象函數(shù)函數(shù)命名怎樣取好的函數(shù)名通過大量項(xiàng)
8、目代碼分析,函數(shù)的遇到的各種問題,如何編程高質(zhì)量函數(shù)內(nèi)容二:函數(shù)代碼重復(fù)重復(fù)的危害強(qiáng)加的重復(fù)/無意的重復(fù)/無耐心的重復(fù)/開發(fā)者之間的重復(fù)不要重復(fù)自己DRYDontRepeatYourselfPrincipleMakeItEasytoReuse(讓復(fù)用變得容易)魔法數(shù)(Magicnumber)重復(fù)性代碼(DuplicatedCode)接口不同的相似類(AlternativeClasseswithDifferentInterfaces)系統(tǒng)分離關(guān)注點(diǎn)系統(tǒng)架構(gòu)的基礎(chǔ)通用服務(wù)組件通過某項(xiàng)目代碼是介紹重復(fù)編碼問題演示研發(fā)過程之中的常見重復(fù)問題,以及如何解決內(nèi)容三:函數(shù)參數(shù)函數(shù)參數(shù)過長最理想的參數(shù)數(shù)量是零
9、,其次是一,再次是二,有足夠的理由才能使用三個以上參數(shù).函數(shù)參數(shù)重構(gòu)之道-引入?yún)?shù)對象(introduceparameterobject函數(shù)參數(shù)的順序.不要把程序參數(shù)當(dāng)做工作變量/臨時變量函數(shù)參數(shù)模式-collectingparameter函數(shù)返回值通過大量項(xiàng)目代碼是函數(shù)參數(shù)問題演示函參數(shù)的重構(gòu)內(nèi)容四:變量變量定義常見的錯誤變量的數(shù)據(jù)類型變量的初始化原則變量的作用域變量的持續(xù)性變量的綁定時間數(shù)據(jù)類型和控制結(jié)構(gòu)之間的關(guān)系變量的命名全局變量通過大量項(xiàng)目代碼演示變量相關(guān)問題演示變量的注意事項(xiàng)內(nèi)容一:條件表達(dá)式IF/ELSE語句應(yīng)該如何編寫Switch/Case語句應(yīng)該如何編寫復(fù)雜條件表示式的危害過分
10、深層的縮進(jìn),或者“嵌套”,已經(jīng)困擾了計(jì)算機(jī)界達(dá)25年之久,并且至今仍然是產(chǎn)生混亂代碼的罪魁禍?zhǔn)字粡?fù)雜表達(dá)式重構(gòu)之道引入解釋變量/分解條件/抽取方法計(jì)算條件表驅(qū)動法-多級嵌套IF語句的必然之道表驅(qū)動法使用總則某保險項(xiàng)目表驅(qū)動法應(yīng)用案例分析通過大量項(xiàng)目代碼演示條件表達(dá)式編碼問題復(fù)雜表達(dá)式的注意事項(xiàng),如何解決內(nèi)容二:利用多態(tài)解決復(fù)雜表達(dá)式面向?qū)ο蠖鄳B(tài)技術(shù)的新認(rèn)識減少使用if語句,重構(gòu)到多態(tài)以State/Strategy取代類型代碼引入NullObject以Command替換條件調(diào)度程序轉(zhuǎn)移聚集操作到Visitor第4單元轉(zhuǎn)移裝飾功能到Decorator復(fù)雜表達(dá)式與循通過大量項(xiàng)目代碼演示多態(tài)可以解決
11、的編程問題環(huán)語句內(nèi)容三:防止變異防止變異-如何設(shè)計(jì)函數(shù),對象,子系.使其內(nèi)部的變化或不穩(wěn)定性對其他元素元素產(chǎn)生不良影響接口,多態(tài),數(shù)據(jù)封裝、間接性和標(biāo)準(zhǔn)都是源于PV開閉原則數(shù)據(jù)驅(qū)動(Data-DrivenDesign)編程元數(shù)據(jù)或反射驅(qū)動(Meta-dataorReflective)編程復(fù)雜業(yè)務(wù)邏輯-解釋器驅(qū)動編程案例通過電信項(xiàng)目介紹如何設(shè)計(jì)應(yīng)對變化通過大量項(xiàng)目代碼演示多態(tài)可以解決的編程問題內(nèi)容四:循環(huán)控制選擇循環(huán)的種類循環(huán)控制循環(huán)的創(chuàng)建-有內(nèi)向外循環(huán)與數(shù)組遞歸Goto語句控制結(jié)構(gòu)與復(fù)雜度案例通過電信項(xiàng)目介紹如何設(shè)計(jì)應(yīng)對變化通過大量項(xiàng)目代碼演示多態(tài)可以解決的編程問題內(nèi)容一:類基礎(chǔ)-數(shù)據(jù)抽象類型
12、(AbstractDataTypes)類的基礎(chǔ):抽象數(shù)據(jù)類需要用到ADT的場景使用ADT的益處基本類型依賴壞味道數(shù)據(jù)泥團(tuán)壞味道案例通過電信項(xiàng)目介紹數(shù)據(jù)的抽象通過大量項(xiàng)目代碼演示數(shù)據(jù)抽象類型解決的問題內(nèi)容二:數(shù)據(jù)封裝數(shù)據(jù)封裝數(shù)據(jù)的訪問第5單元類的封裝高質(zhì)量類設(shè)計(jì)與通過大量項(xiàng)目代碼演示數(shù)據(jù)封裝編碼內(nèi)容三:面向?qū)ο笤O(shè)計(jì)與編程核心職責(zé)分配單一職責(zé)原則RDD-職責(zé)驅(qū)動的面向?qū)ο笤O(shè)計(jì)方法內(nèi)容四:面向?qū)ο蟮木幊躺系垲?過大的類-違反單一職責(zé)依戀情結(jié)-一個方法視乎過于強(qiáng)調(diào)處理其他類的數(shù)據(jù),而不是處理自己的數(shù)據(jù)發(fā)散式改變散彈式修改消息鏈中間人不當(dāng)?shù)木o密性案例通過電信項(xiàng)目介紹OOPDay3第三篇:編程是一種習(xí)慣管
13、理實(shí)踐篇內(nèi)容一:代碼重構(gòu)重構(gòu)必然性實(shí)際重構(gòu)遇到的4大問題如何發(fā)現(xiàn)重構(gòu)點(diǎn)如何去重構(gòu)(重構(gòu)方式)如何知道重構(gòu)何止截止如何保證重構(gòu)的正確性介紹常見的重構(gòu)技術(shù)第6單元重構(gòu)到模式的目錄代碼改善內(nèi)容二:代碼測試代碼測試代碼測試的技巧集錦代碼測試的典型錯誤改善測試過程內(nèi)容三:代碼調(diào)試代碼調(diào)試尋找代碼缺陷調(diào)試的心里因素調(diào)試工具內(nèi)容四:修改遺留項(xiàng)目代碼的藝術(shù)必須修改遺留的代碼起因遺留代碼修改危險事項(xiàng)如何對依賴代碼做測試依賴代碼的感知與分離依賴代碼修改的接縫技術(shù)修改依賴代碼的工具降低風(fēng)險的措施接依賴技術(shù)內(nèi)容一:代碼質(zhì)量度量代碼質(zhì)量的度量業(yè)界其他度量標(biāo)準(zhǔn)通過分析多個實(shí)際項(xiàng)目,分別度量相關(guān)是否標(biāo)準(zhǔn)內(nèi)容二:代碼靜態(tài)分析工具代碼靜態(tài)分析工具概述以J
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新能源汽車充電樁安裝與維護(hù)勞動合同3篇
- 2024年酒店床墊設(shè)計(jì)與生產(chǎn)合同
- 二零二五年度品牌形象授權(quán)合同6篇
- 2025機(jī)器設(shè)備轉(zhuǎn)讓合同范文
- 2025年度搬遷工程物資采購合同3篇
- 疼痛護(hù)理查房
- 2024年汕頭房產(chǎn)買賣代理居間合同
- 2025年度水電站施工合同:水電站建設(shè)期項(xiàng)目管理與協(xié)調(diào)服務(wù)3篇
- 2025版智能工廠生產(chǎn)線設(shè)備采購合同2篇
- 2025版按揭房產(chǎn)買賣合同法律援助范本3篇
- 行車工考試試題
- 小兒頭皮靜脈輸液課件
- 宇電溫控器ai 500 501用戶手冊s 6中文說明書
- 電力電纜高頻局放試驗(yàn)報告
- 肺病科主任年度述職匯報
- 2023年福建省晉江市數(shù)學(xué)七年級第一學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測試題含解析
- 水利水電工程基礎(chǔ)坑隱蔽工程驗(yàn)收證書
- 余熱發(fā)電工程總施工組織設(shè)計(jì)方案
- 建設(shè)工程監(jiān)理費(fèi)計(jì)算器(免費(fèi))
- 希望點(diǎn)-列舉法
- 六年級體育課《投擲實(shí)心球》教案
評論
0/150
提交評論