
嵌入式C高質量編程培訓
了解C語言的嵌入式開發特性
了解和性能有關的編碼要素
了解嵌入式C程序的常見組織風格
了解如何采用C進行面向編程
掌握如何建立程序的性能
掌握如何進行可靠性設計、監測并處理可靠性問題
掌握如何建立可測試性,
掌握如何進行嵌入式C白盒測試
掌握如何進行嵌入式C代碼評審,
掌握如何定位嵌入式C質量缺陷并進行代碼重構
嵌入式C關鍵特性
嵌入式C編程基礎
變量與內存分配機制
函數與調用原理
條件控制語句
常量和變量
指針和函數指針
設計中斷函數
關鍵字static,extern,volatile,inline
位操作的應用
結構體中的位域
嵌入式C編碼風格
變量、函數、宏的命名
代碼排版與布局
注釋的策略
indent工具
為代碼編寫文檔
嵌入式C性能優化
使用宏和inline
使用寄存器變量
內嵌匯編
利用硬件特性
循環展開
使用查找表
緊湊的C代碼并不能保證得到高效的機器代碼
編譯優化
嵌入式C軟件結構
嵌入式C軟件模塊與模塊劃分
模塊劃分原則
源代碼文件和目錄的組織
硬件驅動模塊
軟件功能模塊
提供API
頭文件
全局變量
主循環與中斷
軟件的分層結構
嵌入式C函數
一個函數只做一件事,不要編寫多種功能集于一身的函數
明確地定義函數的參數
避免比爾類型參數
編寫函數使其在給定有效的輸入情況下不會失敗
函數不依賴于另一個函數的內部細節
函數要小且容易測試
函數內部代碼塊
嵌入式C的面向對象
用struct來模擬class
封裝
繼承
重載
數據結構的抽象
代碼質量
嵌入式C防御性編程
防御性代碼的風格
編譯警告開關的使用
預計所有可能的異常
檢查所有的返回值
審慎處理內存資源
變量聲明策略
審慎地進行強制轉換
盡量用可移植的數據類型
使用lint來查出編譯程序漏掉的錯誤
使用斷言
嵌入式C白盒測試
TDD與單元測試
單元測試與Debug
單元測試用例設計
即使測試代碼會影響進度,也要堅持測試代碼
測試代碼的責任不在測試員身上,而是程序員自己的責任
嵌入式C代碼評審
代碼評審的規范
代碼評審的組織方式
代碼評審的內容
結合配置管理強制代碼評審
嵌入式C代碼重構
代碼重構的原則
重新命名函數
提煉函數
提煉判斷條件
簡化函數參數
解除全局變量的噩夢
避免函數傳遞中的隱形bug
調整函數位置