程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 編程常見命名規范,編程規范

編程常見命名規范,編程規范

編輯:關於C語言

編程常見命名規范,編程規范


 

1 常見命名規則
比較著名的命名規則首推匈牙利命名法,
這種命名方法是由Microsoft程序員查爾斯·西蒙尼(Charles Simonyi) 提出的。
其主要思想是“在變量和函數名中加入前綴以增進人們對程序的理解”。
匈牙利命名法關鍵是:標識符的名字以一個或者多個小寫字母開頭作為前綴;
前綴之後的是首字母大寫的一個單詞或多個單詞組合,該單詞要指明變量的用途。
例如:lpszStr, 表示指向一個以'\0'結尾的字符串(sz)的長指針(lp)變量。
駱駝(Camel)命名法近年來越來越流行,
在許多新的函數庫和Java這樣的平台下使用得當相多。
駱駝命名法,正如它的名稱所表示的那樣,指的是混合使用大小寫字母來構成標識符的名字。
其中第一個單詞首字母小寫,余下的單詞首字母大寫。
例如:printEmployeePaychecks(),函數名中每一個邏輯斷點都有一個大寫字母來標記。
帕斯卡(Pascal)命名法與駱駝命名法類似。
只不過駱駝命名法是第一個單詞首字母小寫,而帕斯卡命名法則是第一個單詞首字母大寫。
例如:DisplayInfo()和UserName都是采用了帕斯卡命名法。
在C#中,以帕斯卡命名法和駱駝命名法居多。
事實上,很多程序設計者在實際命名時會將駱駝命名法和帕斯卡結合使用,
例如變量名采用駱駝命名法,而函數采用帕斯卡命名法。
另一種流行的命名規則稱為下劃線命名法。
下劃線法是隨著C語言的出現流行起來的,在UNIX/LIUNX這樣的環境,以及GNU代碼中使用非常普遍。
本章所述的命名規則主要基於下劃線命名法發展而來。
2 函數的命名
函數名使用下劃線分割小寫字母的方式命名:
設備名_操作名()
操作名一般采用:謂語(此時設備名作為賓語或者標明操作所屬的模塊)或者
謂語+賓語/表語(此時設備名作為主語或者標明操作所屬的模塊) 等形式,如:
tic_init()
adc_is_busy()
uart_tx_char()
中斷函數的命名直接使用 設備名_isr() 的形式命名,如:
timer2_isr()
3 變量的命名
變量的命名也采用下劃線分割小寫字母的方式命名。
命名應當准確,不引起歧義,且長度適中。如:
int length;
uint32 test_offset;
單字符的名字也是常用的,如i, j, k等,它們通常可用作函數內的局部變量。
tmp常用做臨時變量名。
局部靜態變量,應加s_詞冠(表示static),如:
static int s_lastw;
全局變量(尤其是供外部訪問的全局變量),應加g_詞冠(表示global),如:
void (* g_capture_hook)(void);
4 常量及宏的命名
采用下劃線分割大寫字母的方式命名,一般應以設備名作為前綴,
防止模塊間命名的重復。如:
#define TIMER0_MODE_RELOAD 2
#define TIMER2_COUNT_RETRIEVE(val) ((uint16)(65536 - (val)))
當然,看作接口的宏可以按照函數的命名方法命名,例如:
#define timer2_clear() (TF2 = 0)
#define timer0_is_expired() (TF0)
5 常用縮寫詞
原詞 縮寫
addition add
answer ans
array arr
average avg
buffer buf或buff
capture cap或capt
check chk
count cnt
column col
control ctrl
decode dec
define def
delete del
destination dst或dest
display disp
division div
encode enc
environment env
error err
float flt
frequency freq
header hdr
index idx
image img
increment inc
initalize init
iteration itr
length len
memory mem
middle mid
make mk
message msg
multiplication mul
number num
operand opnd
optimization opt
operator optr
packet pkt
positon pos
previous pre或prev
payload type pt
pointer ptr
return code rc
record rcd
receive recv
result res
return ret
source src
stack stk
string str
subtraction sub
table tab
temporary tmp或temp
total tot
time stamp ts
value val
6 結語
沒有一種命名規則可以讓所有的程序員贊同。而這多種命名規則也確實各有利弊。
沒有必要花太多的精力試圖發明最好的命名規則,
而是應當制定一種令大多數項目成員滿意的命名規則並切實執行。
標識符命名的一致性自然會體現出代碼的優雅。
當然,如果你的程序使用了第三方的代碼,而這些模塊經驗證確實是正確無誤的。
那麼也沒有必要一味追求命名的一致性,而去修改這些已經定型的模塊中的函數和變量名。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved