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