C語言-識別符號命名
目前比較使用的如下幾種命名風格:
unix like 風格:單詞用小寫字母,每個單詞直接用下劃線 ‘_’ 分割,例如 text_mutex ,
Windows 風格:大小寫字母混用,單詞連在一起,每個單詞首字母大寫。不過 Windows 風格如果遇到大寫專有用語時會有些彆扭,例如命名一個讀取 RFC 文字的函式,命令為 ReadRFCText ,看起來就沒有 unix like 的 read_rfc_text 清晰了。
匈牙利命名法是計算機程式設計中的一種命名規則,用這種方法命名的變數顯示了其資料型別。匈牙利命名主要包括三個部分:基本型別、一個或更多的字首、一個限定詞。
注意,不要使用匈牙利命名法
1 、識別符號的命名要清晰、明瞭,有明確含義,同時使用完整的單詞或大家基本可以理解的縮寫,避免使人產生誤解
說明:儘可能給出描述性名稱,不要節約空間,讓別人很快理解你的程式碼更重要。
示例:好的命名:
int error_number;
int number_of_completed_connection;
不好的命名:使用模糊的縮寫或隨意的字元:
int n;
int nerr;
int n_comp_conns;
2 、除了常見的通用縮寫以外,不使用單詞縮寫,不得使用漢語拼音
說明:較短的單詞可透過去掉 “ 母音 ” 形成縮寫,較長的單詞可取單詞的頭幾個字母形成縮寫,一些單詞有大家公認的縮寫,常用單詞的縮寫必須統一。協議中的單詞的縮寫與協議保持一致。對於某個系統使用的專用縮寫應該在注視或者某處做統一說明。
示例:一些常見可以縮寫的例子:
argument 可縮寫為 arg
buffer 可縮寫為 buff
clock 可縮寫為 clk
command 可縮寫為 cmd
compare 可縮寫為 cmp
configuration 可縮寫為 cfg
device 可縮寫為 dev
error 可縮寫為 err
hexadecimal 可縮寫為 hex
increment 可縮寫為 inc 、
initialize 可縮寫為 init
maximum 可縮寫為 max
message 可縮寫為 msg
minimum 可縮寫為 min
parameter 可縮寫為 para
previous 可縮寫為 prev
register 可縮寫為 reg
semaphore 可縮寫為 sem
statistic 可縮寫為 stat
synchronize 可縮寫為 sync
temp 可縮寫為 tmp
3 、產品 / 專案組內部應保持統一的命名風格
說明: Unix like 和 windows like 風格均有其擁躉,產品應根據自己的部署平臺,選擇其中一種,並在產品內部保持一致。
例外:即使產品之前使用匈牙利命名法,新程式碼也不應當使用。
4 、用正確的反義片語命名具有互斥意義的變數或相反動作的函式等
示例:
add / remove begin / end create / destroy
insert / delete first / last get / release
increment / decrement put / get add / delete
lock / unlock open / close min / max
old / new start / stop next / previous
source / target show / hide send / receive
source / destination copy / paste up / down
5 、儘量避免名字中出現數字編號,除非邏輯上的確需要編號
示例:如下命名,使人產生疑惑。
#define EXAMPLE_0_TEST_
#define EXAMPLE_1_TEST_
應改為有意義的單詞命名
#define EXAMPLE_UNIT_TEST_
#define EXAMPLE_ASSERT_TEST_
6 、識別符號前不應新增模組、專案、產品、部門的名稱作為字首
說明:很多已有程式碼中已經習慣在檔名中增加模組名,這種寫法類似匈牙利命名法,導致檔名不可讀,並且帶來帶來如下問題:
1 第一眼看到的是模組名,而不是真正的檔案功能,阻礙閱讀;
2 檔名太長;
3 檔名和模組繫結,不利於維護和移植。若 foo.c 進行重構後,從 a 模組挪到 b 模組,若 foo.c 中有模組名,則需要將檔名從 a_module_foo.c 改為 b_module_foo.c
7 、命名規範
7.1 檔案命名統一採用小寫字元
說明:因為不同系統對檔名大小寫處理會不同(如 MS 的 DOS 、 Windows 系統不區分大小寫,但是 Linux 系統則區分),所以程式碼檔案命名建議統一採用全小寫字母命名。
7.2 全域性變數應增加 “g_” 字首
7.3 靜態變數應增加 “s_” 字首
說明:增加 g_ 字首或者 s_ 字首,原因如下:
首先,全域性變數十分危險,透過字首使得全域性變數更加醒目,促使開發人員對這些變數的使用更加小心。
其次,從根本上說,應當儘量不使用全域性變數,增加 g_ 和 s_ 字首,會使得全域性變數的名字顯得很醜陋,從而促使開發人員儘量少使用全域性變數。
7.4 禁止使用單位元組命名變數,但允許定義 i 、 j 、 k 作為區域性迴圈變數
7.5 不建議使用匈牙利命名法。
7.6 函式命名應以函式要執行的動作命名,一般採用動詞或者動詞+名詞的結構。
7.7 對於數值或者字串等等常量的定義,建議採用全大寫字母,單詞之間加下劃線 ‘_’ 的方式命名(列舉同樣建議使用此方式定義)。
示例:
#define PI_ROUNDED 3.14
7.8 除了標頭檔案或編譯開關等特殊標識定義,宏定義不能使用下劃線 ‘_’ 開頭和結尾。
說明:一般來說, ’_’ 開 頭 、 結 尾的宏都是一些內部的定 義 , ISO/IEC 9899 (俗稱 C99 )中有如下的描述( 6.10.8 Predefined macro names ):
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561984/viewspace-2221183/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 1413: C語言合法識別符號C語言符號
- C語言合法識別符號 hd 2024C語言符號
- C#程式碼識別符號命名規範C#符號
- go——識別符號的命名規範Go符號
- 識別符號定義以及命名規則(駝峰命名法)符號
- 識別符號的命名規則和規範符號
- Go語言的識別符號、關鍵字、字面量、型別Go符號型別
- GO語言————4.1 檔名、關鍵字與識別符號Go符號
- 識別符號符號
- C++ 提示未宣告的識別符號C++符號
- python的識別符號Python符號
- IJCAI 2018 利用跨語言知識改進稀缺資源語言命名實體識別AI
- C++11新特性之final override識別符號C++IDE符號
- 對C語言中無符號型別的建議C語言符號型別
- 使用去中心化識別符號 (DID) 作為識別符號元系統中心化符號
- 微調大型語言模型進行命名實體識別模型
- Go 語言指標符號 *和&Go指標符號
- Java資料型別、識別符號Java資料型別符號
- 識別符號與關鍵字符號
- java基本無法-識別符號Java符號
- 初識C語言C語言
- python:LEGB識別符號解析順序Python符號
- SCSS &父選擇器識別符號CSS符號
- URI(統一資源識別符號)符號
- 字串切片識別符號是什麼字串符號
- JavaSE 關鍵字和識別符號Java符號
- 關鍵字、資料型別、識別符號資料型別符號
- c語言模擬Python的命名引數C語言Python
- JAVA基礎語法——識別符號、修飾符、關鍵字(個人整理總結)Java符號
- C語言中識別符號的作用域、名稱空間、連結屬性、生命週期、儲存型別C語言符號型別
- JAVA-識別符號、變數、資料型別Java符號變數資料型別
- js如何生成唯一識別符號UUIDJS符號UI
- java:識別符號 關鍵字 變數Java符號變數
- C語言與嵌入式C語言的區別C語言
- AppID 的英文全稱是 Application Identifier AppID(應用程式識別符號)GUID(全域性唯一識別符號)APPIDE符號GUI
- [C]有符號數和無符號數符號
- C語言知識彙總 | 00-C語言知識彙總目錄C語言
- 21號 first day 淺談python和c語言的區別PythonC語言