團(tuán)隊(duì)經(jīng)理
互聯(lián)網(wǎng)
面向?qū)ο?/div>
推薦課程
average > 0 ? $model->average . '分' : '10.0分' ?>

代碼簡(jiǎn)潔+CCI混沌指數(shù)+設(shè)計(jì)模式 高級(jí)編程訓(xùn)練營(yíng)

Y.Chen

msup 敏捷教練

27年研發(fā)、管理及咨詢(xún)經(jīng)驗(yàn),擅長(zhǎng)在實(shí)際環(huán)境中靈活應(yīng)用各種研發(fā)方法論
具有豐富的工程技術(shù)與項(xiàng)目管理實(shí)踐經(jīng)驗(yàn),從其程序員、項(xiàng)目經(jīng)理、CMMI/FPA功能點(diǎn)估算/敏捷咨詢(xún)師、事業(yè)部總監(jiān)、副總經(jīng)理等各種技術(shù)與管理崗位獲得的一手經(jīng)驗(yàn),令其可以站在企業(yè)管理者的高度,以更廣的視角來(lái)理解敏捷開(kāi)發(fā),并能配合和推動(dòng)非研發(fā)部門(mén)協(xié)作推廣敏捷。

?27年軟件開(kāi)發(fā)行業(yè)經(jīng)驗(yàn)
? 15年編程、測(cè)試開(kāi)發(fā)經(jīng)驗(yàn)
? 4年中高層管理經(jīng)驗(yàn)
? 13年以上項(xiàng)目管理經(jīng)驗(yàn)
? 15年敏捷項(xiàng)目管理、培訓(xùn)與咨詢(xún)經(jīng)驗(yàn)
? 200+場(chǎng)次培訓(xùn)與咨詢(xún)

曾為金山軟件(西山居),盛大,騰訊,邊鋒,搜狐,迅雷等10多家互聯(lián)網(wǎng)軟件公司提供敏捷培訓(xùn)與咨詢(xún)。

27年研發(fā)、管理及咨詢(xún)經(jīng)驗(yàn),擅長(zhǎng)在實(shí)際環(huán)境中靈活應(yīng)用各種研發(fā)方法論 具有豐富的工程技術(shù)與項(xiàng)目管理實(shí)踐經(jīng)驗(yàn),從其程序員、項(xiàng)目經(jīng)理、CMMI/FPA功能點(diǎn)估算/敏捷咨詢(xún)師、事業(yè)部總監(jiān)、副總經(jīng)理等各種技術(shù)與管理崗位獲得的一手經(jīng)驗(yàn),令其可以站在企業(yè)管理者的高度,以更廣的視角來(lái)理解敏捷開(kāi)發(fā),并能配合和推動(dòng)非研發(fā)部門(mén)協(xié)作推廣敏捷。 ?27年軟件開(kāi)發(fā)行業(yè)經(jīng)驗(yàn) ? 15年編程、測(cè)試開(kāi)發(fā)經(jīng)驗(yàn) ? 4年中高層管理經(jīng)驗(yàn) ? 13年以上項(xiàng)目管理經(jīng)驗(yàn) ? 15年敏捷項(xiàng)目管理、培訓(xùn)與咨詢(xún)經(jīng)驗(yàn) ? 200+場(chǎng)次培訓(xùn)與咨詢(xún) 曾為金山軟件(西山居),盛大,騰訊,邊鋒,搜狐,迅雷等10多家互聯(lián)網(wǎng)軟件公司提供敏捷培訓(xùn)與咨詢(xún)。

課程費(fèi)用

6800.00 /人

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

2

成為教練

課程簡(jiǎn)介

一個(gè)人不可能在地面上學(xué)會(huì)游泳!本課程采用完全現(xiàn)場(chǎng)實(shí)戰(zhàn)的方式,幫助團(tuán)隊(duì)快速體驗(yàn)和學(xué)會(huì)高級(jí)面向?qū)ο蠹夹g(shù),編寫(xiě)出高質(zhì)量、易維護(hù)的代碼。
?學(xué)員分為若干小組(最好是實(shí)際工作組),每個(gè)小組都有2~3個(gè)核心參訓(xùn)人員人
?核心參訓(xùn)人員提供總計(jì)3000回車(chē)行實(shí)際工作代碼
?對(duì)其中1000行代碼,講師會(huì)在課上現(xiàn)場(chǎng)講解并改寫(xiě)(改寫(xiě)量一般在300~500行左右)
?改寫(xiě)完成后達(dá)到極高的標(biāo)準(zhǔn),包括:
?零常數(shù),零for(int i),零else/case(代碼中沒(méi)有任何else和case關(guān)鍵字)、每個(gè)函數(shù)均小于30回車(chē)行
?編碼有效率在13~15LOC/FP左右(世界紀(jì)錄級(jí)別)
?另外每組準(zhǔn)備2000行較差代碼作為課堂練習(xí)
注意:本課程不涉及性能優(yōu)化、安全性、多線程等特殊技術(shù)。

目標(biāo)收益

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

技術(shù)經(jīng)理,開(kāi)發(fā)骨干,資質(zhì)高的新員工,重點(diǎn)產(chǎn)品、新產(chǎn)品、重構(gòu)團(tuán)隊(duì)的全體開(kāi)發(fā)人員

課程大綱

微觀編碼 ?初級(jí)篇
?此階段注重語(yǔ)句級(jí)別的編程技能,基本上不需要面向?qū)ο蠡A(chǔ)
?講師現(xiàn)場(chǎng)對(duì)某個(gè)團(tuán)隊(duì)的代表性產(chǎn)品進(jìn)行代碼審查重點(diǎn)包括:
?變量命名
?函數(shù)命名
?全局變量處理
?消除常數(shù)
?冗余語(yǔ)句的處理
?FFT結(jié)構(gòu)(false-false-true)
?foreach循環(huán)
?var/auto關(guān)鍵字
所有團(tuán)隊(duì)現(xiàn)場(chǎng)對(duì)剩余代碼進(jìn)行重構(gòu),講師點(diǎn)評(píng)
中級(jí)篇 ?此階段注重函數(shù)級(jí)別的編程技能,需要函數(shù)封裝、模板(泛型)等知識(shí)
?講師現(xiàn)場(chǎng)對(duì)某個(gè)團(tuán)隊(duì)的代碼進(jìn)行走讀,指出以下問(wèn)題:
?代碼克隆
?如何消除結(jié)構(gòu)相同、類(lèi)型不同的if-else或case
?模板
?Map
?三元表達(dá)式
?所有團(tuán)隊(duì)現(xiàn)場(chǎng)對(duì)剩余代碼進(jìn)行重構(gòu),講師點(diǎn)評(píng)
宏觀編碼 ?CCI代碼混沌指數(shù)
?CCI是4個(gè)數(shù)據(jù)的平均值:超長(zhǎng)類(lèi)占比(>250邏輯行),超長(zhǎng)方法占比(>30回車(chē)行),不良分支密度((else+case+default)/邏輯行),不良常數(shù)密度(數(shù)字或字符常量/邏輯行)。
?CCI與測(cè)試缺陷密度有0.78~0.80的相關(guān)系數(shù),與生產(chǎn)率有-0.52~-0.75的相關(guān)系數(shù),對(duì)提升生產(chǎn)率和質(zhì)量具有顯著意義。
?據(jù)對(duì)30多個(gè)代碼樣本的研究(約500個(gè)文件),CCI工具與人類(lèi)高手的主觀評(píng)價(jià)幾乎完全相同。
?CCI可由工具自動(dòng)掃描獲得,不受人數(shù)、代碼數(shù)量的限制(約10萬(wàn)行/秒),可用于對(duì)組織級(jí)、大規(guī)模、長(zhǎng)周期代碼的整體度量與控制。
?CCI實(shí)戰(zhàn)
?使用CCI對(duì)現(xiàn)場(chǎng)代碼進(jìn)行掃描
?掃描結(jié)果判讀
?高級(jí)篇(基于CCI結(jié)果)
?此階段注重封裝、繼承、多態(tài)等傳統(tǒng)面向?qū)ο蟮闹R(shí)
?初級(jí)概念講解
?代碼克隆
?圈復(fù)雜度與圈復(fù)雜密度
?講師現(xiàn)場(chǎng)對(duì)某個(gè)團(tuán)隊(duì)的代碼進(jìn)行走讀,修改代碼以降低CCI數(shù)值(越低越好)
?消除超長(zhǎng)類(lèi)
?消除超長(zhǎng)方法
?消除結(jié)構(gòu)大為不同的大段if-else或case
?基類(lèi),虛函數(shù)
?多態(tài)與虛函數(shù)
?接口與多繼承
?基類(lèi)vs接口:擴(kuò)展與實(shí)現(xiàn)
?消除常數(shù)
?封閉與非封閉取之空間的常數(shù)
?所有團(tuán)隊(duì)現(xiàn)場(chǎng)對(duì)剩余代碼進(jìn)行重構(gòu),講師點(diǎn)評(píng)
?質(zhì)量篇
?此階段注重防范開(kāi)發(fā)中、維護(hù)中可能產(chǎn)生的編碼質(zhì)量問(wèn)題
?注:實(shí)際上此章節(jié)所述內(nèi)容,均會(huì)在上述課程中遇到問(wèn)題時(shí)隨時(shí)提到,此處僅做總結(jié)
?講師現(xiàn)場(chǎng)對(duì)某個(gè)團(tuán)隊(duì)的代碼進(jìn)行走讀,指出以下問(wèn)題:
?易讀性問(wèn)題
?看似技術(shù)含量很高的“半截子科技”代碼
?可維護(hù)性問(wèn)題
?成對(duì)出現(xiàn)的編碼
?常數(shù)封裝位置
?多分支結(jié)構(gòu)的處理
?If-else與case的8種消除方法比較
?常見(jiàn)缺陷預(yù)防
?空指針
?數(shù)組越界
?所有團(tuán)隊(duì)現(xiàn)場(chǎng)對(duì)剩余代碼進(jìn)行重構(gòu),講師點(diǎn)評(píng)
設(shè)計(jì)模式 ?設(shè)計(jì)模式解讀
?由于設(shè)計(jì)模式種類(lèi)繁多,此內(nèi)容不固定,而是以根據(jù)兩件事情進(jìn)行選擇性演示
?代碼中存在的問(wèn)題類(lèi)型
?對(duì)代碼重構(gòu)可能用到的模式
?預(yù)計(jì)會(huì)演示23種中的約10種典型的設(shè)計(jì)模式
?心法篇
?此階段注重實(shí)際開(kāi)發(fā)動(dòng)態(tài)過(guò)程中,人們由于編碼次序的差異而造成的思維差異,進(jìn)而導(dǎo)致的編碼質(zhì)量差異;解決了明明懂設(shè)計(jì)模式但卻想不到要用的問(wèn)題
?講師現(xiàn)場(chǎng)對(duì)某個(gè)團(tuán)隊(duì)的一部分代碼進(jìn)行重寫(xiě),并展示以下編程心法:
?從外向內(nèi)分解問(wèn)題出
?先編寫(xiě)調(diào)用者,后編寫(xiě)底層函數(shù)(準(zhǔn)TDD開(kāi)發(fā))
?每5~10分鐘進(jìn)行一次編譯和測(cè)試(TDDB,Test Driven De-Bug測(cè)試驅(qū)動(dòng)的調(diào)試)
?隨時(shí)將問(wèn)題控制在最近2~5行代碼內(nèi)
?內(nèi)建的質(zhì)量
?隨時(shí)避免各種不良編程問(wèn)題,而不是編寫(xiě)后再進(jìn)行重構(gòu)
?一次性寫(xiě)成“上帝代碼”
?“上帝代碼”是在語(yǔ)言框架內(nèi),多一行則多,少一行則少,無(wú)意中刪除或添加任何一個(gè)字符將會(huì)出現(xiàn)編譯錯(cuò)誤的代碼
?首次編寫(xiě)即不包括“陳舊語(yǔ)法”
?在第一次編寫(xiě)代碼時(shí),按照特有的心法和順序,從來(lái)不需要if-else if/switch case等語(yǔ)法,也不會(huì)想到它們
?重構(gòu)
?重構(gòu)時(shí)機(jī)
?重構(gòu)控制
?通過(guò)度量CCI和CCR防止重蹈覆轍
?CCR編碼消耗率是每功能點(diǎn)(Function Point)需要的代碼行數(shù),其數(shù)值大致=邏輯代碼行數(shù)/(api數(shù)*5.4),業(yè)界Java中值為27。由于多數(shù)被重構(gòu)的舊產(chǎn)品都有100~300以上的CCR數(shù)值,通過(guò)每個(gè)迭代持續(xù)度量和控制重構(gòu)代碼的CCR數(shù)值,可以防止重蹈覆轍。
?高級(jí)話題
?單元測(cè)試覆蓋率的提升
?代碼行覆蓋率
?分支覆蓋率
?通過(guò)減少分支來(lái)提升分支覆蓋率
?超越語(yǔ)言的語(yǔ)法邊界
?C,C++,C#,Java,Python語(yǔ)法進(jìn)化對(duì)比
通過(guò)5種語(yǔ)言實(shí)現(xiàn)同一個(gè)功能的對(duì)比,觀察人類(lèi)語(yǔ)言向編碼終極奧義的逼近過(guò)程
微觀編碼
?初級(jí)篇
?此階段注重語(yǔ)句級(jí)別的編程技能,基本上不需要面向?qū)ο蠡A(chǔ)
?講師現(xiàn)場(chǎng)對(duì)某個(gè)團(tuán)隊(duì)的代表性產(chǎn)品進(jìn)行代碼審查重點(diǎn)包括:
?變量命名
?函數(shù)命名
?全局變量處理
?消除常數(shù)
?冗余語(yǔ)句的處理
?FFT結(jié)構(gòu)(false-false-true)
?foreach循環(huán)
?var/auto關(guān)鍵字
所有團(tuán)隊(duì)現(xiàn)場(chǎng)對(duì)剩余代碼進(jìn)行重構(gòu),講師點(diǎn)評(píng)
中級(jí)篇
?此階段注重函數(shù)級(jí)別的編程技能,需要函數(shù)封裝、模板(泛型)等知識(shí)
?講師現(xiàn)場(chǎng)對(duì)某個(gè)團(tuán)隊(duì)的代碼進(jìn)行走讀,指出以下問(wèn)題:
?代碼克隆
?如何消除結(jié)構(gòu)相同、類(lèi)型不同的if-else或case
?模板
?Map
?三元表達(dá)式
?所有團(tuán)隊(duì)現(xiàn)場(chǎng)對(duì)剩余代碼進(jìn)行重構(gòu),講師點(diǎn)評(píng)
宏觀編碼
?CCI代碼混沌指數(shù)
?CCI是4個(gè)數(shù)據(jù)的平均值:超長(zhǎng)類(lèi)占比(>250邏輯行),超長(zhǎng)方法占比(>30回車(chē)行),不良分支密度((else+case+default)/邏輯行),不良常數(shù)密度(數(shù)字或字符常量/邏輯行)。
?CCI與測(cè)試缺陷密度有0.78~0.80的相關(guān)系數(shù),與生產(chǎn)率有-0.52~-0.75的相關(guān)系數(shù),對(duì)提升生產(chǎn)率和質(zhì)量具有顯著意義。
?據(jù)對(duì)30多個(gè)代碼樣本的研究(約500個(gè)文件),CCI工具與人類(lèi)高手的主觀評(píng)價(jià)幾乎完全相同。
?CCI可由工具自動(dòng)掃描獲得,不受人數(shù)、代碼數(shù)量的限制(約10萬(wàn)行/秒),可用于對(duì)組織級(jí)、大規(guī)模、長(zhǎng)周期代碼的整體度量與控制。
?CCI實(shí)戰(zhàn)
?使用CCI對(duì)現(xiàn)場(chǎng)代碼進(jìn)行掃描
?掃描結(jié)果判讀
?高級(jí)篇(基于CCI結(jié)果)
?此階段注重封裝、繼承、多態(tài)等傳統(tǒng)面向?qū)ο蟮闹R(shí)
?初級(jí)概念講解
?代碼克隆
?圈復(fù)雜度與圈復(fù)雜密度
?講師現(xiàn)場(chǎng)對(duì)某個(gè)團(tuán)隊(duì)的代碼進(jìn)行走讀,修改代碼以降低CCI數(shù)值(越低越好)
?消除超長(zhǎng)類(lèi)
?消除超長(zhǎng)方法
?消除結(jié)構(gòu)大為不同的大段if-else或case
?基類(lèi),虛函數(shù)
?多態(tài)與虛函數(shù)
?接口與多繼承
?基類(lèi)vs接口:擴(kuò)展與實(shí)現(xiàn)
?消除常數(shù)
?封閉與非封閉取之空間的常數(shù)
?所有團(tuán)隊(duì)現(xiàn)場(chǎng)對(duì)剩余代碼進(jìn)行重構(gòu),講師點(diǎn)評(píng)
?質(zhì)量篇
?此階段注重防范開(kāi)發(fā)中、維護(hù)中可能產(chǎn)生的編碼質(zhì)量問(wèn)題
?注:實(shí)際上此章節(jié)所述內(nèi)容,均會(huì)在上述課程中遇到問(wèn)題時(shí)隨時(shí)提到,此處僅做總結(jié)
?講師現(xiàn)場(chǎng)對(duì)某個(gè)團(tuán)隊(duì)的代碼進(jìn)行走讀,指出以下問(wèn)題:
?易讀性問(wèn)題
?看似技術(shù)含量很高的“半截子科技”代碼
?可維護(hù)性問(wèn)題
?成對(duì)出現(xiàn)的編碼
?常數(shù)封裝位置
?多分支結(jié)構(gòu)的處理
?If-else與case的8種消除方法比較
?常見(jiàn)缺陷預(yù)防
?空指針
?數(shù)組越界
?所有團(tuán)隊(duì)現(xiàn)場(chǎng)對(duì)剩余代碼進(jìn)行重構(gòu),講師點(diǎn)評(píng)
設(shè)計(jì)模式
?設(shè)計(jì)模式解讀
?由于設(shè)計(jì)模式種類(lèi)繁多,此內(nèi)容不固定,而是以根據(jù)兩件事情進(jìn)行選擇性演示
?代碼中存在的問(wèn)題類(lèi)型
?對(duì)代碼重構(gòu)可能用到的模式
?預(yù)計(jì)會(huì)演示23種中的約10種典型的設(shè)計(jì)模式
?心法篇
?此階段注重實(shí)際開(kāi)發(fā)動(dòng)態(tài)過(guò)程中,人們由于編碼次序的差異而造成的思維差異,進(jìn)而導(dǎo)致的編碼質(zhì)量差異;解決了明明懂設(shè)計(jì)模式但卻想不到要用的問(wèn)題
?講師現(xiàn)場(chǎng)對(duì)某個(gè)團(tuán)隊(duì)的一部分代碼進(jìn)行重寫(xiě),并展示以下編程心法:
?從外向內(nèi)分解問(wèn)題出
?先編寫(xiě)調(diào)用者,后編寫(xiě)底層函數(shù)(準(zhǔn)TDD開(kāi)發(fā))
?每5~10分鐘進(jìn)行一次編譯和測(cè)試(TDDB,Test Driven De-Bug測(cè)試驅(qū)動(dòng)的調(diào)試)
?隨時(shí)將問(wèn)題控制在最近2~5行代碼內(nèi)
?內(nèi)建的質(zhì)量
?隨時(shí)避免各種不良編程問(wèn)題,而不是編寫(xiě)后再進(jìn)行重構(gòu)
?一次性寫(xiě)成“上帝代碼”
?“上帝代碼”是在語(yǔ)言框架內(nèi),多一行則多,少一行則少,無(wú)意中刪除或添加任何一個(gè)字符將會(huì)出現(xiàn)編譯錯(cuò)誤的代碼
?首次編寫(xiě)即不包括“陳舊語(yǔ)法”
?在第一次編寫(xiě)代碼時(shí),按照特有的心法和順序,從來(lái)不需要if-else if/switch case等語(yǔ)法,也不會(huì)想到它們
?重構(gòu)
?重構(gòu)時(shí)機(jī)
?重構(gòu)控制
?通過(guò)度量CCI和CCR防止重蹈覆轍
?CCR編碼消耗率是每功能點(diǎn)(Function Point)需要的代碼行數(shù),其數(shù)值大致=邏輯代碼行數(shù)/(api數(shù)*5.4),業(yè)界Java中值為27。由于多數(shù)被重構(gòu)的舊產(chǎn)品都有100~300以上的CCR數(shù)值,通過(guò)每個(gè)迭代持續(xù)度量和控制重構(gòu)代碼的CCR數(shù)值,可以防止重蹈覆轍。
?高級(jí)話題
?單元測(cè)試覆蓋率的提升
?代碼行覆蓋率
?分支覆蓋率
?通過(guò)減少分支來(lái)提升分支覆蓋率
?超越語(yǔ)言的語(yǔ)法邊界
?C,C++,C#,Java,Python語(yǔ)法進(jìn)化對(duì)比
通過(guò)5種語(yǔ)言實(shí)現(xiàn)同一個(gè)功能的對(duì)比,觀察人類(lèi)語(yǔ)言向編碼終極奧義的逼近過(guò)程

活動(dòng)詳情

提交需求