国产亚洲免费播放片_日韩欧美中文字幕在线韩免费_亚州在线观看视频在线观看_中文字幕AV熟女_中文高清欧美日本_视频一区二区三卡在线观看免费_日本精品人妻久久久_亚洲日韩另类制服无码AV_777米奇影视狠狠狠_国产成人免费无码精品

?

您好!歡迎來到上海艾縱企業(yè)管理咨詢有限公司!

加入收藏

登錄注冊(cè)

400-676-1955

專題課程

CleanCode代碼整潔之道 軟件高質(zhì)量代碼體系實(shí)踐

我要報(bào)名

編輯日期 2018-06-14  閱讀次數(shù):981 次


【課程背景】

軟件質(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就有典型的Code wins arguments(代碼贏得爭論)。在Facebook code review時(shí)間大約占50%,管理者對(duì)代碼質(zhì)量負(fù)有一定責(zé)任 。甚至代碼質(zhì)量高于一切Facebook Code reviewKPI考核的對(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í)間無一例外要多得多。你只能坐在一旁,眼睜睜看著用戶投奔競爭對(duì)手,而這個(gè)時(shí)候,競爭對(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)越好,你做了越多的單元測試,你的代碼質(zhì)量越好、越小、耦合越松,那么添加新代碼所需要付出的成本就越少。因此大師 Craig Larman: 好維護(hù)的代碼就是沒有代碼,好的程序員的代碼產(chǎn)量是負(fù)的,因?yàn)樗ㄟ^減少代碼來增加功能”。對(duì)比現(xiàn)實(shí)中,很多人以為,LOC(line of code)越多的feature越大,寫LOC越多的程序員越牛。這其實(shí)是很錯(cuò)誤的觀念.

因此我們必須有全面的管理制度讓我們保持代碼少而整潔。所以Michael Feathers認(rèn)為"未來屬于知道如何有策略地刪除代碼的公司。持有代碼的成本要比我們想象的大。意識(shí)到這一點(diǎn)的公司更具有競爭優(yōu)勢。

為了切實(shí)幫助軟件企業(yè)降低企業(yè)項(xiàng)目開發(fā)成本,大面積提高軟件工程師編程能力和代碼質(zhì)量管理能力,我們特別推出實(shí)戰(zhàn)訓(xùn)練營,分享多家大型研發(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ì)量。

 

【培訓(xùn)特色】

我們已經(jīng)為幾十家企業(yè)提供了多次培訓(xùn)和咨詢服務(wù),以下企業(yè)已經(jīng)選擇了我們的內(nèi)訓(xùn)課程

互聯(lián)網(wǎng)研發(fā)企業(yè),比如百度研發(fā)中心4次 ,阿里巴巴6, 騰訊 ,暢唐科技, 獵豹移動(dòng)(原金山移動(dòng))

電信研發(fā)企業(yè),比如思科研發(fā)中心5次,阿爾卡特-朗訊研發(fā)中心,華為研發(fā)中心13次,摩托羅拉研發(fā)中心 1次,大唐電信研發(fā) 1次,廣州從興電子,億陽通信 1次, 愛立信研發(fā)中心8次,鼎橋通信技術(shù)5, 艾默生深圳研發(fā)中心 4,  中興通信, 中興軟創(chuàng)

廣電行業(yè):廣州誠毅科技研發(fā)中心,

企業(yè)軟件研發(fā)企業(yè),比如Adobe中國研發(fā)中心,北京久其研發(fā)中心,博古中國研發(fā)中心,金蝶深圳研發(fā)中心, EMC中國研發(fā)中心(北京和上海), VMware(北京與上海研發(fā)中心), Intel中國研發(fā)中心(上海), AutoDesk上海研發(fā)中心

嵌入式軟件企業(yè),比如阿爾卑斯中國研發(fā)中心,德國M&M Software,西門子研發(fā)中心, Sony研發(fā)中心,金立智能研究院,南車研發(fā)中心,德塞西威,霍尼韋爾研發(fā)中心, 東芝中國研發(fā)中心, 匯川科技,

外包類企業(yè),聯(lián)盟計(jì)算機(jī)服務(wù)(天津)有限公司ACS 3次。

金融行業(yè):恒生電子,華騰,中國人民銀行研發(fā)中心,工商行研發(fā)中心,平安科技研發(fā)中心,建行研發(fā)中心,深圳登記結(jié)算研發(fā)中心,花旗銀行中國研發(fā)中心

 

我們已經(jīng)為幾十期公開課,已經(jīng)有100多家企業(yè)已經(jīng)選擇了我們的公開課程

騰訊(深圳)有限公司, EMC中國研發(fā)中心,華為終端有限公司、 斯倫貝謝技術(shù),通用電氣醫(yī)療系統(tǒng)(中國)有限公司,華為技術(shù)有限公司,廣州從興電子開發(fā)有限公司、福建星網(wǎng)銳捷股份有限公司,廣州菲特網(wǎng)絡(luò)科技有限公司,盛立金融(杭州)軟件公司 ,索尼中國研發(fā)中心, 愛德萬,上海金慧軟件有限公司,珠海世紀(jì)鼎利通信科技股份,蘭吉爾儀表系統(tǒng)有限公司,珠海飛企軟件有限公司,廣東佳和通信技術(shù)有限公司,珠海一多監(jiān)測科技有限公司,遠(yuǎn)光軟件股份有限公司

 

【目標(biāo)收益】

課程根據(jù)編程大師的理論:

編程是一種態(tài)度,編程是一種技藝,編程是一種習(xí)慣。

面向以下不同的人群,有不同收獲。

角色

收獲

技術(shù)負(fù)責(zé)人/技術(shù)總監(jiān)

了解業(yè)內(nèi)代碼審查的形式、技術(shù)、技巧和流程的成功經(jīng)驗(yàn),優(yōu)化現(xiàn)有開發(fā)中心代碼審核方法;

掌握業(yè)內(nèi)成熟的自動(dòng)化審核審查工具及方法,提升開發(fā)人員在代碼結(jié)構(gòu)分析、代碼質(zhì)量度量、代碼覆蓋率分析等方面的能力,并有效運(yùn)用到項(xiàng)目研發(fā)工作中。

項(xiàng)目經(jīng)理/項(xiàng)目管理人員/架構(gòu)師/

學(xué)習(xí)其他研發(fā)機(jī)構(gòu)的代碼管理思想

代碼管理手段

代碼管理相關(guān)流程和相關(guān)工具

代碼監(jiān)控

測試部門/質(zhì)量管理部門

代碼審查

代碼檢查列表

代碼管理手段

代碼管理制度的建立

經(jīng)驗(yàn)豐富的開發(fā)人員

掌握代碼編碼規(guī)范、代碼評(píng)審要點(diǎn)等知識(shí),引導(dǎo)開發(fā)人員養(yǎng)成正確的代碼編寫習(xí)慣;

編程技藝和相關(guān)編程實(shí)踐

重構(gòu)手段

一般開發(fā)人員

編程技藝和相關(guān)編程實(shí)踐

重構(gòu)手段

代碼壞味道

 

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

各類軟件企業(yè)和研發(fā)中心的程序員、軟件設(shè)計(jì)師、架構(gòu)師, 項(xiàng)目經(jīng)理,質(zhì)量部門員工。

如果你不重視代碼質(zhì)量, 請(qǐng)不要參加. 本課程面向重視代碼質(zhì)量的管理者.? 

如果你不認(rèn)為寫好代碼是一件重要,困難并且有趣的事情,請(qǐng)你不要參加. 本課程面向追求卓越的程序員,我們認(rèn)為編程是一種態(tài)度.

如果你已經(jīng)多年不寫代碼,建議不要參加,本課程面向一線還在編程的程序員/設(shè)計(jì)師/架構(gòu)師

 

【培訓(xùn)時(shí)長】

5


【課程大綱】

 

?

          第一篇: 編程是一種態(tài)度-------價(jià)值觀

          主題

          培訓(xùn)內(nèi)容

          備注

          1單元  代碼就是債務(wù)

          內(nèi)容一:代碼是債務(wù)

          1.    代碼的認(rèn)識(shí)---代碼就是債務(wù)

          2.    代碼是債務(wù),越少越好

          3.    你擁有的代碼越多,添加新內(nèi)容所要付出的成本就越高

          4.    通過案例分析讓代碼庫盡可能小的方法:

          5.    通過國際研發(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í)間超支了,還有少數(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.    編程真的是簡單的勞動(dòng)嗎?

          7.    通過多家項(xiàng)目案例進(jìn)行分析,傳統(tǒng)思想對(duì)代碼的種種誤解,我們提出了從3種新的角度來觀察代碼,

          a)      從管理者的角度,我們僅僅觀察代碼的運(yùn)行時(shí)行為,導(dǎo)致代碼的靜態(tài)結(jié)構(gòu)混亂的源頭。這就是代碼的冰山原理,大量垃圾代碼隱藏在冰山之下。

          b)     設(shè)計(jì)師的角度認(rèn)為只要有好的設(shè)計(jì),軟件質(zhì)量就可以保證。其實(shí)我們認(rèn)為代碼是真正可以精確描述的設(shè)計(jì)文檔。

          c)      程序員的視角,編程真的很難,通過某一個(gè)項(xiàng)目案例分析,20多人一周的工作量就為幾行代碼問題

           

           

           

           

           

           

           

           

           

           

           

          2單元編程價(jià)值觀

          內(nèi)容一:編程價(jià)值觀

          1.       編程的方法學(xué)

          2.       什么是好的代碼,我們卻認(rèn)為“Good code is not bad code !

          3.       編程價(jià)值觀---溝通,簡單,靈活

          4.       價(jià)值觀決定行為

          5.       優(yōu)秀代碼的評(píng)價(jià)標(biāo)準(zhǔn), 什么是高質(zhì)量編碼? 特征是什么?

          6.       軟件代碼的可讀性

          7.       代碼的可擴(kuò)展性

          8.       糟糕代碼的特征

          9.       劣質(zhì)代碼的代價(jià)

          10.   大師評(píng)價(jià)整潔代碼的標(biāo)準(zhǔn)

          11.   通過大量項(xiàng)目案例分析,什么是好的代碼,對(duì)好代碼新的認(rèn)識(shí)

           

          第二篇: 編程是一種技藝-------實(shí)踐篇

          3單元 高質(zhì)量函數(shù)(該內(nèi)容較多,根據(jù)實(shí)際情況調(diào)整

          內(nèi)容一:高質(zhì)量函數(shù)/過程

          1.       為什么需要函數(shù)

          2.       函數(shù)復(fù)雜度度量

          3.       函數(shù)圈復(fù)雜度以及度量

          4.       函數(shù)抽象層次-單一抽象層次原則SLAP(Single Level of Abstrction Principle)

          5.       函數(shù)實(shí)現(xiàn)模式之組合函數(shù)(Composed Method)

          6.       萬惡之源函數(shù)過長

          7.       函數(shù)的單一職責(zé)

          8.       函數(shù)第一原則:是要短小,函數(shù)第二原則:是還要短小,函數(shù)第三原則:是必須短小

          9.       函數(shù)重構(gòu)之道抽取方法(Extract Method)和抽取對(duì)象函數(shù)

          10.   函數(shù)命名怎樣取好的函數(shù)名

          11.   通過大量項(xiàng)目代碼分析,函數(shù)的遇到的各種問題,如何編程高質(zhì)量函數(shù)

           

          內(nèi)容二:函數(shù)易理解與溝通

          1.       函數(shù)主體流

          2.       函數(shù)的異常處理

          3.       函數(shù)主題流程簡化方法1-助手方法

          4.       助手方法的應(yīng)用場景

          5.       助手方法的效果

          6.       函數(shù)主題流程簡化方法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ù)成本分析通過大量案例分析

          a)      確定需要修改哪些部分有多難

          b)     必要的改動(dòng)有多少

          c)      實(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ù)過長

          2.       最理想的參數(shù)數(shù)量是零,其次是一,再次是二,有足夠的理由才能使用三個(gè)以上參數(shù).

          3.       函數(shù)參數(shù)重構(gòu)之道-引入?yún)?shù)對(duì)象(introduce parameter object

          4.       函數(shù)參數(shù)的順序.

          5.       不要把程序參數(shù)當(dāng)做工作變量/臨時(shí)變量

          6.       函數(shù)參數(shù)模式-collecting parameter

          7.       函數(shù)返回值

          8.       通過大量項(xiàng)目代碼是函數(shù)參數(shù)問題

          9.       演示函參數(shù)的重構(gòu)

           

          內(nèi)容五:變量

          1.      “一旦了解在程序設(shè)計(jì)中如何使用變量,他就掌握了程序設(shè)計(jì)的精華?!?span>-Dijkstra

          2.      為什么需要變量變量的引入的理由

          3.      單一變量用途

          4.      變量與方法

          5.      變量作用域

          6.      變量聲明與初始化

          7.     通過案例分析, 函數(shù)的變量如何處理與控制。

           

           

          內(nèi)容六:函數(shù)代碼重復(fù)

          1.       重復(fù)的危害

          2.       強(qiáng)加的重復(fù)/無意的重復(fù)/無耐心的重復(fù)/開發(fā)者之間的重復(fù)

          3.       不要重復(fù)自己DRYDon't Repeat Yourself Principle

          4.       Make It Easy to Reuse(讓復(fù)用變得容易)

          5.       魔法數(shù)(Magic number)

          6.       重復(fù)性代碼(Duplicated Code)

          7.       接口不同的相似類(Alternative Classes with Different Interfaces)

          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á)式的簡化

          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)字?/span>

          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.       引入Null Object

          5.       Command替換條件調(diào)度程序

          6.       轉(zhuǎn)移聚集操作到Visitor

          7.       轉(zhuǎn)移裝飾功能到Decorator

          8.       通過大量項(xiàng)目代碼演示多態(tài)可以解決的編程問題

           

           

          內(nèi)容九:函數(shù)組織

          1.       盡管組織直線代碼是一個(gè)相當(dāng)簡單的任務(wù),代碼結(jié)構(gòu)上的不合理會(huì)對(duì)代碼的質(zhì)量,正確性,可讀性和可維護(hù)性帶來影響。

          2.       把函數(shù)代碼分成“段落”

          3.       選擇一個(gè)有意義的順序,始終一致的使用它

          4.