1、代碼規范的目標
- 代碼簡潔精煉、美觀,可持續性好
- 高效率
- 高復用,可移植性好
- 高內聚,低耦合
- 沒有冗余
- 規范性,代碼有規可循,可以看出自己當時的思考過程
- 特殊排版,特殊語法,特殊指令,必須特別說明
- 鍛煉代碼抽象思維
- 參考書籍,高質量程序設計指南:C語言,林銳
2、代碼風格好的好處
- 代碼分層明顯,方便在開發中明確接口,確定具體任務
- 良好的代碼風格有助于拆分業務邏輯,減少文檔工作
3、代碼的基本架構
BSP(板級驅動程序,外設的驅動)
Core(MCU驅動程序,初始化內部的時鐘、IIC、SPI,包括main.c)
Drivers(廠商驅動程序——廠商SDK程序)
Middlewares(中間件——各個項目通用,抽象性高,例如FreeRTOS數學庫中所包含的快速傅里葉變換庫)
SYSTEM(系統配置層——對系統定義整體的宏)
Application(應用層——根據業務)
?
代碼規范NOTE:
1、多個數據的printf需要進行換行及對齊處理

2、在書寫函數時注意是否需要使用返回值,使用的話,有沒有在判斷返回值非法時打印出出錯的具體原因,方便后續程序在出錯時進行排查。例如在申請內存時出錯。
3、或者在某個模式啟動、參數存儲、消息發送之類的場景(短時間內觸發一次或少次)中有沒有對關鍵參數進行打印。例如某個函數的職責是負責接受APP發送過來的數據并且通過調用其他的API接口來設置參數,此時就需要將參數通過打印的方式Printf的方式打印出來。
單片機串口打印調試信息①_mcu jlink調試串口打印設置-CSDN博客
4、寫NULL == ARR,而不是ARR = NULL

5、一份優秀的應用層代碼應該是先能夠抽象出所需要實現的API接口功能,即先畫靶子再射箭。體現在代碼上就是能先在頭文件上確定可暴露在外部的接口函數功能,然后可以在源文件內完成對這些接口函數的編寫。也就是可以先建立接口函數的邏輯。而編寫接口函數時,接口函數內的分點注釋其實就相當于該函數的邏輯。則應做到先有頭文件再有源文件,先有邏輯注釋再有功能代碼。
層級 | 職責 | 可見性 |
---|---|---|
應用層接口 | 定義業務邏輯接口 | 公開(頭文件) |
服務層 | 實現接口核心邏輯 | 文件內可見(static函數) |
數據層 | 參數獲取與轉換 | 完全封裝(static變量+函數) |