關注+星標公眾號,不錯過精彩內容

素材來源?| 網絡
編排 | strongerHuang
良好的編程習慣,決定了今后代碼的質量。
很多工程師不注重平時編碼習慣,比如命名規則,一會大寫、一會小寫,一會中文拼音,一會下劃線等,導致自己寫的代碼自己都看不懂了。
今天就來分享一點關于軟件代碼常見的幾種命名規則。
匈牙利命名法
例如:m_lpszStr, 表示指向一個以0字符結尾的字符串的長指針成員變量。
例如:bEnable, nLength, hWnd。

下面分享關于匈牙利命名法中常用的小寫字母的前綴。
屬性部分:
g_ 全局變量
c_ 常量
m_ c++類成員變量
s_ 靜態變量
類型部分:
數組 a
指針 p
函數 fn
無效 v
句柄 h
長整型 l
布爾 b
浮點型(有時也指文件) f
雙字 dw
字符串 sz
短整型 n
雙精度浮點 d
計數 c(通常用cnt)
字符 ch(通常用c)
整型 i(通常用n)
字節 by
字 w
實型 r
無符號 u
描述部分:
最大 Max
最小 Min
初始化 Init
臨時變量 T(或Temp)
源對象 Src
目的對象 Dest
駝峰命名法
例如:
printEmployeePaychecks();
函數名中每一個邏輯斷點都有一個大寫字母來標記。
帕斯卡命名法
例如:
DisplayInfo();
UserName
都是采用了帕斯卡命名法。
事實上,很多程序設計者在實際命名時會將駝峰命名法和帕斯卡結合使用,例如變量名采用駝峰命名法,而函數采用帕斯卡命名法。
下劃線命名法
下劃線法是隨著C語言的出現流行起來的,在UNIX/LIUNX這樣的環境,以及GNU代碼中使用非常普遍。
1.函數的命名
函數名使用下劃線分割小寫字母的方式命名:
設備名_操作名();
操作名一般采用:謂語(此時設備名作為賓語或者標明操作所屬的模塊)或者謂語 賓語/表語(此時設備名作為主語或者標明操作所屬的模塊) 等形式,如:
tic_init();
adc_is_busy();
uart_tx_char();
中斷函數的命名直接使用 設備名_isr() 的形式命名,如:
timer2_isr();
2.變量的命名
變量的命名也采用下劃線分割小寫字母的方式命名。命名應當準確,不引起歧義,且長度適中。如:
int length;
uint32 test_offset;
單字符的名字也是常用的,如i, j, k等,它們通常可用作函數內的局部變量。tmp常用做臨時變量名。
局部靜態變量,應加s_詞冠(表示static),如:
static int s_lastw;
全局變量(尤其是供外部訪問的全局變量),應加g_詞冠(表示global),如:
void (* g_capture_hook)(void);
3.常量及宏的命名
采用下劃線分割大寫字母的方式命名,一般應以設備名作為前綴,
防止模塊間命名的重復。如:
#define TIMER0_MODE_RELOAD 2
#define TIMER2_COUNT_RETRIEVE(val) ((uint16)(65536 - (val)))
當然,看作接口的宏可以按照函數的命名方法命名,例如:
#define timer2_clear() (TF2 = 0)
#define timer0_is_expired() (TF0)
據考察,沒有一種命名規則可以讓所有的程序員贊同,程序設計教科書一般都不指定命名規則。
命名規則對軟件產品而言并不是“成敗悠關”的事,我們不要化太多精力試圖發明世界上最好的命名規則,而應當制定一種令大多數項目成員滿意的命名規則,并在項目中貫徹實施。
------------?END?------------

●專欄《嵌入式工具》
●專欄《嵌入式開發》
●專欄《Keil教程》
●嵌入式專欄精選教程


點擊“閱讀原文”查看更多分享。