曙海教學優勢
我們的課程培訓了大批受歡迎的實戰型工程師。大批企業與我們
建立了良好的合作關系。曙海培訓的課程在業內有著響亮的知名度。
秉承二十幾年積累的教學品質,本課程以真實項目實戰為導向,授課工程師將會與您分享設計的全流程及工具的綜合使用技巧、經驗。
第一篇: 編程是一種態度-------編程價值觀
代碼就是債務 內容一:代碼是債務
代碼的認識---代碼就是債務
代碼是債務,越少越好
你擁有的代碼越多,添加新內容所要付出的成本就越高
通過案例分析讓代碼庫盡可能小的方法:
盡可能創建通用的工具。
刪除不用的代碼或者特性。
確保項目模塊化,并分割成相互沒有關聯的子項目。
熟悉你經常使用的代碼庫。
對代碼庫的規模時刻保持警惕,保持它是小而敏捷的。
通過國際研發中心電信計費系統演示代碼是債務的思想,10多年國外研發團隊設計與研發第一版本,目前幾百人在維護
通過項目演示通過重構如何減少了一半的代碼,維護的人員的減少
項目的失敗可能歸咎于各種各樣的原因。一些項目因糟糕的需求而失敗,另一些則由于錢和時間超支了,還有少數單純是因為糟糕的管理所致。如果我們探究其根本原因,是否會發現所有項目失敗的罪魁禍首是糟糕的代碼呢?
Bob大叔堅信糟糕的代碼所帶來的成本之大足夠讓一個項目失敗。
?
編程價值觀 內容一:編程價值觀
編程的方法學
編程價值觀---溝通,簡單,靈活
優秀代碼的評價標準, 什么是高質量編碼? 特征是什么?
軟件代碼的可讀性
代碼的可擴展性
糟糕代碼的特征
劣質代碼的代價
大師評價整潔代碼的標準
通過某項目代碼是演示糟糕的代碼,以及經過重構之后的代碼,進行對此.
?
第二篇: 編程是一種技藝-------編程實踐篇
高質量函數 內容一:高質量函數/過程
為什么需要函數
函數復雜度度量
函數圈復雜度以及度量
函數抽象層次-單一抽象層次原則SLAP(Single Level of Abstrction Principle)
函數實現模式之—組合函數(Composed Method)
萬惡之源—函數過長
函數第一原則:是要短小,函數第二原則:是還要短小,函數第三原則:是必須短小
函數重構之道—抽取方法(Extract Method)和抽取對象函數
函數命名—怎樣取好的函數名
通過大量項目代碼分析,函數的遇到的各種問題,如何編程高質量函數
容二:函數代碼重復
重復的危害
強加的重復/無意的重復/無耐心的重復/開發者之間的重復
不要重復自己DRY—Don't Repeat Yourself Principle
Make It Easy to Reuse(讓復用變得容易)
魔法數(Magic number)
重復性代碼(Duplicated Code)
接口不同的相似類(Alternative Classes with Different Interfaces)
系統分離關注點
系統架構的基礎通用服務組件
通過某項目代碼是介紹重復編碼問題
演示研發過程之中的常見重復問題,以及如何解決
內容三:函數參數
函數參數過長
最理想的參數數量是零,其次是一,再次是二,有足夠的理由才能使用三個以上參數.
函數參數重構之道-引入參數對象(introduce parameter object
函數參數的順序.
不要把程序參數當做工作變量/臨時變量
函數參數模式-collecting parameter
函數返回值
通過大量項目代碼是函數參數問題
演示函參數的重構
內容四:變量
變量定義常見的錯誤
變量的數據類型
變量的初始化原則
變量的作用域
變量的持續性
變量的綁定時間
數據類型和控制結構之間的關系
變量的命名
全局變量
通過大量項目代碼演示變量相關問題
演示變量的注意事項
?
復雜表達式與循環語句 內容一:條件表達式
IF/ELSE語句應該如何編寫
Switch/Case語句應該如何編寫
復雜條件表示式的危害
過分深層的縮進,或者“嵌套”,已經困擾了計算機界達25年之久,并且至今仍然是產生混亂代碼的罪魁禍首之一
復雜表達式重構之道—引入解釋變量/分解條件/抽取方法計算條件
表驅動法-多級嵌套IF語句的必然之道
表驅動法使用總則
某保險項目表驅動法應用案例分析
通過大量項目代碼演示條件表達式編碼問題
復雜表達式的注意事項,如何解決
內容二:利用多態解決復雜表達式
面向對象多態技術的新認識
減少使用if語句,重構到多態
以State/Strategy取代類型代碼
引入Null Object
以Command替換條件調度程序
轉移聚集操作到Visitor
轉移裝飾功能到Decorator
通過大量項目代碼演示多態可以解決的編程問題
內容三:防止變異
防止變異-如何設計函數,對象,子系.使其內部的變化或不穩定性對其他元素元素產生不良影響
接口,多態,數據封裝、間接性和標準都是源于PV
開閉原則
數據驅動(Data-Driven Design)編程
元數據或反射驅動(Meta-data or Reflective )編程
復雜業務邏輯-解釋器驅動編程
案例—通過電信項目介紹如何設計應對變化
通過大量項目代碼演示多態可以解決的編程問題
內容四:循環控制
選擇循環的種類
循環控制
循環的創建-有內向外
循環與數組
遞歸
Goto語句
控制結構與復雜度
案例—通過電信項目介紹如何設計應對變化
通過大量項目代碼演示多態可以解決的編程問題
?
高質量類設計與編碼 內容一:類基礎-數據抽象類型(Abstract Data Types)
類的基礎:抽象數據類
需要用到ADT的場景
使用ADT的益處
基本類型依賴壞味道
數據泥團壞味道
案例—通過電信項目介紹數據的抽象
通過大量項目代碼演示數據抽象類型解決的問題
內容二:數據封裝
數據封裝
數據的訪問
類的封裝
通過大量項目代碼演示數據封裝
內容三:面向對象設計與編程核心----職責分配
單一職責原則
RDD-職責驅動的面向對象設計方法
內容四:面向對象的編程
上帝類/過大的類--違反單一職責
依戀情結-一個方法視乎過于強調處理其他類的數據,而不是處理自己的數據
發散式改變
散彈式修改
消息鏈
中間人
不當的緊密性
案例—通過電信項目介紹OOP
?
第三篇: 編程是一種習慣-------管理實踐篇
代碼改善 內容一:代碼重構
重構必然性
實際重構遇到的4大問題
如何發現重構點
如何去重構(重構方式)
如何知道重構何止截止
如何保證重構的正確性
介紹常見的重構技術
重構到模式的目錄
內容二:代碼測試
代碼測試
代碼測試的技巧集錦
代碼測試的典型錯誤
改善測試過程
內容三:代碼調試
代碼調試
尋找代碼缺陷
調試的心里因素
調試工具
內容四:修改遺留項目代碼的藝術
必須修改遺留的代碼起因
遺留代碼修改危險事項
如何對依賴代碼做測試
依賴代碼的感知與分離
依賴代碼修改的接縫技術
修改依賴代碼的工具
降低風險的措施
接依賴技術
?
代碼管理 內容一:代碼質量度量
代碼質量的度量
業界其他度量標準
通過分析多個實際項目,分別度量相關是否標準
內容二:代碼靜態分析工具
代碼靜態分析工具概述
以Java語言代碼靜態分析工具為例介紹
CheckStyle:用于編碼標準
PMD 的 CPD:幫助發現代碼重復
Coverlipse:測量代碼覆蓋率
JDepend:提供依賴項分析
Metric:有效地查出復雜度
其他語言相關代碼靜態分析工具
通過案例演示工具在項目之中的應用
內容三:代碼評審
代碼評審前期準備
代碼評審的代碼量
代碼評審的檢查表
代碼評審的總結與學習
內容四:代碼管理
結合國內多家研發中心的代碼管理思路分享
代碼質量體系的建立
?
?
?