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