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

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

Y.Chen

msup 敏捷教練

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

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

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

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

課程費用

6800.00 /人

課程時長

2

成為教練

課程簡介

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

目標收益

培訓(xùn)對象

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

課程大綱

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

活動詳情

提交需求