軟件高質量代碼體系最佳實踐
角色 | 收獲 |
技術負責人/技術總監 | 1、了解業內先進的代碼審查的形式、技術、技巧和流程的成功經驗,優化現有開發中心代碼審核方法; |
項目經理/項目管理人員/架構師 | 1. 1、學習其他研發機構的代碼管理思想 |
測試部門/質量管理部門 | 1. 1、代碼審查 |
資深開發人員 | 1. 1、掌握代碼編碼規范、代碼評審要點等知識,引導開發人員養成正確的代碼編寫習慣; |
一般開發人員 | 1. 1、編程技藝和相關編程實踐 |
【課程大綱】
第一篇: 編程是一種態度-------價值觀
第1單元 代碼就是債務
內容一:代碼是債務
1. 代碼的認識---代碼就是債務
2. 代碼是債務,越少越好
3. 你擁有的代碼越多,添加新內容所要付出的成本就越高
4. 通過案例分析讓代碼庫盡可能小的方法:
5. 通過國際研發中心電信計費系統演示代碼是債務的思想,10多年國外研發團隊設計與研發第一版本,目前幾百人在維護
v 通過項目演示通過重構如何減少了一半的代碼,維護的人員的減少
項目的失敗可能歸咎于各種各樣的原因。一些項目因糟糕的需求而失敗,另一些則由于錢和時間超支了,還有少數單純是因為糟糕的管理所致。如果我們探究其根本原因,是否會發現所有項目失敗的罪魁禍首是糟糕的代碼呢?
Bob大叔堅信糟糕的代碼所帶來的成本之大足夠讓一個項目失敗。
內容二軟件界要以新視角看待代碼
1. 傳統的軟件工程對代碼的錯誤認識
2. 代碼的兩面性,代碼的靜態結構和運行時行為
3. 客戶和管理者往往僅僅關注代碼的運行時的行為
4. 溫伯格認為的主管必須關注代碼
5. 軟件設計與代碼的關系—真正好的設計是在編碼階段一步一步而形成的,通過案例分析,設計如何根據代碼進行演化
6. 編程真的是簡單的勞動嗎?
7. 通過多家項目案例進行分析,傳統思想對代碼的種種誤解,我們提出了從3種新的角度來觀察代碼
第2單元編程價值觀
內容一:編程價值觀
1. 編程的方法學
2. 什么是好的代碼,我們卻認為“Good code is not bad code !”
3. 編程價值觀---溝通,簡單,靈活
4. 價值觀決定行為
5. 優秀代碼的評價標準:什么是高質量編碼? 特征是什么?
6. 軟件代碼的可讀性
7. 代碼的可擴展性
8. 糟糕代碼的特征
9. 劣質代碼的代價
10. 大師評價整潔代碼的標準
11. 通過大量項目案例分析,什么是好的代碼,對好代碼新的認識
第二篇: 編程是一種技藝-------實踐篇
第3單元 高質量函數
內容一:高質量函數/過程
1. 為什么需要函數
2. 函數復雜度度量
3. 函數圈復雜度以及度量
4. 函數抽象層次-單一抽象層次原則SLAP(Single Level of Abstrction Principle)
5. 函數實現模式之—組合函數(Composed Method)
6. 萬惡之源—函數過長
7. 函數的單一職責
8. 函數第一原則:是要短小,函數第二原則:是還要短小,函數第三原則:是必須短小
9. 函數重構之道—抽取方法(Extract Method)和抽取對象函數
10. 函數命名—怎樣取好的函數名
11. 通過大量項目代碼分析,函數的遇到的各種問題,如何編程高質量函數
內容二:函數易理解與溝通
1. 函數主體流
2. 函數的異常處理
3. 函數主題流程簡化方法1-助手方法
4. 助手方法的應用場景
5. 助手方法的效果
6. 函數主題流程簡化方法2-函數對象(MethodObject)
7. 通過真實項目代碼進行分析,如果提高代碼的可讀性
內容三:函數靈活/易可擴展---函數接縫
1. 歷史遺留代碼維護問題
2. 某電信研發中心的維護問題—開發維護的效率問題。
3. 增加一個功能特性的成本并不單單是為這些功能編碼所花費時間的成本,還應該包括特性擴展的障礙成本。
4. 代碼的可維護成本分析—通過大量案例分析
5. 如何實現代碼的易擴展—函數接縫
6. 接縫(seam),指程序中的一些特殊的點,在這些點上你無需做任何修改就可以達到改動程序行為的目的
7. 通過案例分析,如何實現函數的靈活/易擴展。
內容四:函數參數
1. 函數參數過長
2. 最理想的參數數量是零,其次是一,再次是二,有足夠的理由才能使用三個以上參數.
3. 函數參數重構之道-引入參數對象(introduce parameter object
4. 函數參數的順序.
5. 不要把程序參數當做工作變量/臨時變量
6. 函數參數模式-collecting parameter
7. 函數返回值
8. 通過大量項目代碼是函數參數問題
9. 演示函參數的重構
內容五:變量
1. “一旦了解在程序設計中如何使用變量,他就掌握了程序設計的精華。”-Dijkstra
2. 為什么需要變量—變量的引入的理由
3. 單一變量用途
4. 變量與方法
5. 變量作用域
6. 變量聲明與初始化
7. 通過案例分析, 函數的變量如何處理與控制。
內容六:函數代碼重復
1. 重復的危害
2. 強加的重復/無意的重復/無耐心的重復/開發者之間的重復
3. 不要重復自己DRY—Don't Repeat Yourself Principle
4. Make It Easy to Reuse(讓復用變得容易)
5. 魔法數(Magic number)
6. 重復性代碼(Duplicated Code)
7. 接口不同的相似類(Alternative
Classes with Different Interfaces)
8. 系統分離關注點
9. 系統架構的基礎通用服務組件
10. 通過某項目代碼是介紹重復編碼問題
11. 演示研發過程之中的常見重復問題,以及如何解決
內容七:條件表達式...
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08
2020/04/08