課程簡(jiǎn)介
目標(biāo)收益
培訓(xùn)對(duì)象
課程內(nèi)容
讓軟件投入使用后的“折騰”期盡量縮短!
業(yè)界普遍認(rèn)為,軟件項(xiàng)目開發(fā)成本的70%取決于軟件開發(fā)人員個(gè)人的技能、經(jīng)驗(yàn)和工作習(xí)慣(《個(gè)體軟件過程的改進(jìn)》-張友生等)。因此,提高軟件研發(fā)人員的代碼能力,是軟件企業(yè)的立足之本!
軟件企業(yè)的開發(fā)成本在那里?一個(gè)中大規(guī)模的軟件,從其誕生、投入使用到最終穩(wěn)定,中間要經(jīng)過長(zhǎng)時(shí)間的“折騰”期。在這個(gè)時(shí)期,軟件會(huì)出現(xiàn)無(wú)數(shù)的問題:不穩(wěn)定、隨即性的死機(jī)、數(shù)據(jù)庫(kù)連接丟失、不符合用戶的業(yè)務(wù)…,于是軟件被反復(fù)修改,好不容易穩(wěn)定一點(diǎn)了,為了適應(yīng)用戶的需求又必須做新的修改,于是新一輪的不穩(wěn)定再次出現(xiàn),軟件開發(fā)商為此投入了巨大的人力物力。最終一個(gè)中大型的軟件基本穩(wěn)定下來(lái),需要經(jīng)過幾年的甚至十年以上的時(shí)間!一些軟件從此開始發(fā)揮其巨大的商業(yè)價(jià)值,但更多的軟件系統(tǒng),由于時(shí)間過長(zhǎng),面臨業(yè)務(wù)模型、技術(shù)落后的尷尬境地,于是,基于新框架的軟件被策劃出來(lái),進(jìn)入了下一個(gè)誕生、投入使用、“折騰”、穩(wěn)定、推倒重來(lái)的過程。
如何緩解這樣的尷尬境地?從技術(shù)的角度,提高研發(fā)人員的代碼質(zhì)量是重中之重。大量的,大面積提高軟件軟發(fā)人員的軟件設(shè)計(jì)、編寫質(zhì)量,可大大縮短軟件開發(fā)完成后的穩(wěn)定期,做到只是為了適應(yīng)用戶的需求而修改,而非因?yàn)檐浖旧碣|(zhì)量不過關(guān)而反復(fù)修改;并且為適應(yīng)用戶需求所做的修改,也能保證修改本身的可靠性,且新修改不會(huì)導(dǎo)致已有代碼出現(xiàn)問題!
本課程的講師都是骨灰級(jí)的編碼高手,有近15年的一線軟件編碼經(jīng)驗(yàn),經(jīng)歷過大量的軟件產(chǎn)品、項(xiàng)目,經(jīng)歷過軟件研發(fā)中的種種磨練,對(duì)軟件穩(wěn)定性不佳造成的反復(fù)、結(jié)項(xiàng)一拖再拖、不得不長(zhǎng)期泡在用戶現(xiàn)場(chǎng)等,有深刻的體會(huì)。我們收集了大量的案例,包括優(yōu)秀的設(shè)計(jì)編碼,和典型的不佳設(shè)計(jì),通過“魔鬼式訓(xùn)練”訓(xùn)練,大量的、反復(fù)式的練習(xí),強(qiáng)化提高程序員的代碼與編程能力,以此促進(jìn)企業(yè)軟件生產(chǎn)力水平的大幅度提高。
實(shí)踐證明,軟件的設(shè)計(jì)和編碼是有章可循的。本課程總結(jié)講師的總結(jié)了程序員非常易犯的若干種錯(cuò)誤,匯聚了軟件開發(fā)常見的常見策略、模式、原則,歸納為易于理解的編程實(shí)戰(zhàn)技巧,每種都通過大量的案例進(jìn)行強(qiáng)化訓(xùn)練,并用綜合案例加以貫穿,通過大量的真實(shí)案例,貫穿了設(shè)計(jì)、編碼、重構(gòu)、調(diào)試等整個(gè)軟件生命周期過程,詳細(xì)地介紹了各個(gè)階段需要注意的要點(diǎn)以及難點(diǎn),這些知識(shí)都是培訓(xùn)師十幾年編程經(jīng)驗(yàn)的總結(jié),如何避免重復(fù)犯錯(cuò),讓代碼更具健壯性。
課程大綱
第一單元 規(guī)范編碼與優(yōu)劣代碼的判定 |
內(nèi)容一:成為卓越的程序員----代碼能力及關(guān)鍵因素 軟件的核心是什么(市場(chǎng)?管理?技術(shù)?需求?銷售?測(cè)試?) 做一個(gè)優(yōu)秀的程序員并不簡(jiǎn)單! 低頭看路與抬頭看天——理論與實(shí)踐的結(jié)合 優(yōu)秀代碼的評(píng)價(jià)標(biāo)準(zhǔn) 優(yōu)秀的代碼,而不僅是可以運(yùn)行的代碼 劣質(zhì)代碼的代價(jià) 內(nèi)容二:編碼規(guī)范 通用的編碼規(guī)范 C/C++/java/C#/編碼規(guī)范 內(nèi)容三:案例—通過實(shí)際項(xiàng)目演示優(yōu)秀的代碼及不佳代碼 介紹項(xiàng)目背景,展現(xiàn)設(shè)計(jì)細(xì)想 閱讀代碼指出代碼壞癥狀 重構(gòu)為優(yōu)秀的代碼,介紹重構(gòu)的思想及代碼對(duì)比 |
第二單元 整潔代碼之道 |
內(nèi)容一:代碼的壞味道—代碼的質(zhì)量底線 代碼壞味道概述 代碼壞味道——程序員與醫(yī)生的區(qū)別 代碼壞味道----低級(jí)篇(重復(fù)的代碼、過長(zhǎng)的函數(shù)、過大的類、過長(zhǎng)的參數(shù)列表、發(fā)散式變化、分散的修改) 代碼壞味道----中級(jí)篇(偽面向?qū)ο蟮恼{(diào)用、數(shù)據(jù)泥團(tuán)、基本類型的誤用、switch-case結(jié)構(gòu)的誤用、平行繼承體系、過薄的類、只有局部意義的成員變量) 代碼壞味道----高級(jí)篇(過度耦合的消息鏈、過薄的中間對(duì)象、緊耦合類、相似的類、只有數(shù)據(jù)的類、濫用類的繼承關(guān)系) 通過案例,讓學(xué)員尋找代碼壞味道 可以根據(jù)客戶現(xiàn)在的項(xiàng)目作為案例進(jìn)行現(xiàn)場(chǎng)分析,找出相應(yīng)的代碼壞味道 內(nèi)容二:某項(xiàng)目分析----重點(diǎn)了解現(xiàn)實(shí)項(xiàng)目代碼的充斥大量壞味道 介紹項(xiàng)目需求情況,閱讀現(xiàn)有代碼指出代碼壞癥狀 不看不知道,代碼到底有多爛—觸目驚心的代碼 通過重構(gòu)逐步改善代碼質(zhì)量 本案例學(xué)習(xí)多種代碼的整潔方案 |
第三單元 代碼質(zhì)量度量 |
內(nèi)容一:代碼質(zhì)量度量 代碼質(zhì)量的度量 通過分析多個(gè)實(shí)際項(xiàng)目,分別度量相關(guān)是否標(biāo)準(zhǔn) 內(nèi)容二:代碼評(píng)審 代碼評(píng)審前期準(zhǔn)備 代碼評(píng)審的代碼量 代碼評(píng)審的檢查表 代碼評(píng)審的總結(jié)與學(xué)習(xí) 通過案例分析如何做好代碼評(píng)審 |
第四單元 如何達(dá)到優(yōu)秀的設(shè)計(jì) |
內(nèi)容一:什么是好的設(shè)計(jì)以及如何預(yù)先設(shè)計(jì)實(shí)現(xiàn) 什么是好的設(shè)計(jì)和衡量的手段 可擴(kuò)展性(Extensibility)容易添加新的功能. 結(jié)合案例,通過那些手段如何實(shí)現(xiàn)該目標(biāo) 靈活性(Flexibility)代碼修改平穩(wěn)地發(fā)生. 結(jié)合案例,通過那些手段如何實(shí)現(xiàn)該目標(biāo) 可插入性(Pluggability)容易將一個(gè)類抽出去,同時(shí)將另一個(gè)有同樣接口的類加入進(jìn)來(lái). 結(jié)合案例,通過那些手段如何實(shí)現(xiàn)該目標(biāo) 軟件的變化分析---發(fā)現(xiàn)變化/封裝變化/隔離變化 分析真實(shí)項(xiàng)目,如何預(yù)先設(shè)計(jì),給我們哪些啟示,我們可以學(xué)習(xí)到什么 內(nèi)容二:代碼設(shè)計(jì)中的通用模式 (GRASP模式) 什么是GRASP設(shè)計(jì)原則 信息專家模式和應(yīng)用場(chǎng)景,以及案例分析 創(chuàng)建者模式和應(yīng)用場(chǎng)景,以及案例分析 創(chuàng)建者模式和應(yīng)用場(chǎng)景,以及案例分析 高內(nèi)聚/低耦合模式和應(yīng)用場(chǎng)景,以及案例分析 控制者模式和應(yīng)用場(chǎng)景,以及案例分析 多態(tài)/純虛構(gòu)模式和應(yīng)用場(chǎng)景,以及案例分析 間接/保護(hù)變量模式和應(yīng)用場(chǎng)景,以及案例分析 分析某個(gè)具體項(xiàng)目,如何設(shè)計(jì)重構(gòu),給我們哪些啟示,我們可以學(xué)習(xí)到什么 內(nèi)容四:案例—某項(xiàng)目設(shè)計(jì)思路分析 案例情況 演示如何發(fā)現(xiàn)設(shè)計(jì)壞味道,以及如何重構(gòu) |
第一單元 規(guī)范編碼與優(yōu)劣代碼的判定 內(nèi)容一:成為卓越的程序員----代碼能力及關(guān)鍵因素 軟件的核心是什么(市場(chǎng)?管理?技術(shù)?需求?銷售?測(cè)試?) 做一個(gè)優(yōu)秀的程序員并不簡(jiǎn)單! 低頭看路與抬頭看天——理論與實(shí)踐的結(jié)合 優(yōu)秀代碼的評(píng)價(jià)標(biāo)準(zhǔn) 優(yōu)秀的代碼,而不僅是可以運(yùn)行的代碼 劣質(zhì)代碼的代價(jià) 內(nèi)容二:編碼規(guī)范 通用的編碼規(guī)范 C/C++/java/C#/編碼規(guī)范 內(nèi)容三:案例—通過實(shí)際項(xiàng)目演示優(yōu)秀的代碼及不佳代碼 介紹項(xiàng)目背景,展現(xiàn)設(shè)計(jì)細(xì)想 閱讀代碼指出代碼壞癥狀 重構(gòu)為優(yōu)秀的代碼,介紹重構(gòu)的思想及代碼對(duì)比 |
第二單元 整潔代碼之道 內(nèi)容一:代碼的壞味道—代碼的質(zhì)量底線 代碼壞味道概述 代碼壞味道——程序員與醫(yī)生的區(qū)別 代碼壞味道----低級(jí)篇(重復(fù)的代碼、過長(zhǎng)的函數(shù)、過大的類、過長(zhǎng)的參數(shù)列表、發(fā)散式變化、分散的修改) 代碼壞味道----中級(jí)篇(偽面向?qū)ο蟮恼{(diào)用、數(shù)據(jù)泥團(tuán)、基本類型的誤用、switch-case結(jié)構(gòu)的誤用、平行繼承體系、過薄的類、只有局部意義的成員變量) 代碼壞味道----高級(jí)篇(過度耦合的消息鏈、過薄的中間對(duì)象、緊耦合類、相似的類、只有數(shù)據(jù)的類、濫用類的繼承關(guān)系) 通過案例,讓學(xué)員尋找代碼壞味道 可以根據(jù)客戶現(xiàn)在的項(xiàng)目作為案例進(jìn)行現(xiàn)場(chǎng)分析,找出相應(yīng)的代碼壞味道 內(nèi)容二:某項(xiàng)目分析----重點(diǎn)了解現(xiàn)實(shí)項(xiàng)目代碼的充斥大量壞味道 介紹項(xiàng)目需求情況,閱讀現(xiàn)有代碼指出代碼壞癥狀 不看不知道,代碼到底有多爛—觸目驚心的代碼 通過重構(gòu)逐步改善代碼質(zhì)量 本案例學(xué)習(xí)多種代碼的整潔方案 |
第三單元 代碼質(zhì)量度量 內(nèi)容一:代碼質(zhì)量度量 代碼質(zhì)量的度量 通過分析多個(gè)實(shí)際項(xiàng)目,分別度量相關(guān)是否標(biāo)準(zhǔn) 內(nèi)容二:代碼評(píng)審 代碼評(píng)審前期準(zhǔn)備 代碼評(píng)審的代碼量 代碼評(píng)審的檢查表 代碼評(píng)審的總結(jié)與學(xué)習(xí) 通過案例分析如何做好代碼評(píng)審 |
第四單元 如何達(dá)到優(yōu)秀的設(shè)計(jì) 內(nèi)容一:什么是好的設(shè)計(jì)以及如何預(yù)先設(shè)計(jì)實(shí)現(xiàn) 什么是好的設(shè)計(jì)和衡量的手段 可擴(kuò)展性(Extensibility)容易添加新的功能. 結(jié)合案例,通過那些手段如何實(shí)現(xiàn)該目標(biāo) 靈活性(Flexibility)代碼修改平穩(wěn)地發(fā)生. 結(jié)合案例,通過那些手段如何實(shí)現(xiàn)該目標(biāo) 可插入性(Pluggability)容易將一個(gè)類抽出去,同時(shí)將另一個(gè)有同樣接口的類加入進(jìn)來(lái). 結(jié)合案例,通過那些手段如何實(shí)現(xiàn)該目標(biāo) 軟件的變化分析---發(fā)現(xiàn)變化/封裝變化/隔離變化 分析真實(shí)項(xiàng)目,如何預(yù)先設(shè)計(jì),給我們哪些啟示,我們可以學(xué)習(xí)到什么 內(nèi)容二:代碼設(shè)計(jì)中的通用模式 (GRASP模式) 什么是GRASP設(shè)計(jì)原則 信息專家模式和應(yīng)用場(chǎng)景,以及案例分析 創(chuàng)建者模式和應(yīng)用場(chǎng)景,以及案例分析 創(chuàng)建者模式和應(yīng)用場(chǎng)景,以及案例分析 高內(nèi)聚/低耦合模式和應(yīng)用場(chǎng)景,以及案例分析 控制者模式和應(yīng)用場(chǎng)景,以及案例分析 多態(tài)/純虛構(gòu)模式和應(yīng)用場(chǎng)景,以及案例分析 間接/保護(hù)變量模式和應(yīng)用場(chǎng)景,以及案例分析 分析某個(gè)具體項(xiàng)目,如何設(shè)計(jì)重構(gòu),給我們哪些啟示,我們可以學(xué)習(xí)到什么 內(nèi)容四:案例—某項(xiàng)目設(shè)計(jì)思路分析 案例情況 演示如何發(fā)現(xiàn)設(shè)計(jì)壞味道,以及如何重構(gòu) |