代碼質量直觀反映工程師水平。統一風格能大幅降低團隊協作溝通成本,本文從文件管理、命名、表達式、文件編寫四大維度闡述個人實踐規範。
a,b,i 僅限迴圈計數)。| 對象 | 風格 | 範例 |
|---|---|---|
| 文件/資料夾 | 全小寫,縮寫大寫 | flash_LED.c, UART.c |
| 局部變數 | 駝峰,小寫開頭,單詞 | height, sensorTemp |
| 指標變數 | p_ 前綴 + 目標名 | p_height |
| 全域變數 | 模組名 + 功能名 | sensor_temperature, LCD_status |
| 陣列 | 單詞首字母大寫 | StringBuffer |
| 函數 | 主謂結構,下劃線分隔,模組_動作 | Delay_MS(), UART_TX(), REF_Set() |
| 標號 | 單詞小寫 | end_label |
| 自定義類型 | 單詞首字母大寫 | Student(類型),student(變數) |
| 宏定義 | 全大寫 + 下劃線 | MAX_ARRAY_LENGTH |
a = a + b;a=-1 被誤解為 a = a - 1(舊版編譯器),寫 a = -1;。+= 不能寫 + =。血淚教訓:a = a/*b; 被識別為註釋開頭,正確寫 a = a / *b; 或 a = a/(*b);。
| .c 源文件 | .h 頭文件 |
|---|---|
| #include 指令 | #include 指令 |
| 宏定義 | 宏定義 |
| 所有函數定義(含函數體) | 內部函數聲明(static) |
| 內部函數聲明(static) | 外部函數聲明(extern) |
| 外部變數定義(賦初值) | 外部變數聲明(extern,不賦值) |
| 靜態外部變數定義 | 外部陣列聲明(const) |
| 條件編譯 | 條件編譯 |
| 自定義類型 | 自定義類型 |
#ifndef __FILENAME_H__ #define __FILENAME_H__ // 內容 #endif
int main() {(緊湊)int main()\n{(對齊明確)說明入口/出口參數、功能、注意事項,便於維護。
規範非束縛,而是自由的前提。從今天起,用「給新手看」的標準審視每行代碼,專業習慣成就長遠職業生涯。