C 風格 命名規則

2021-08-09 15:28:41 字數 2776 閱讀 4880

函式命名, 變數命名, 檔案命名要有描述性; 少用縮寫.

說明

盡可能使用描述性的命名, 別心疼空間, 畢竟相比之下讓**易於新讀者理解更重要. 不要用只有專案開發者能理解的縮寫, 也不要通過砍掉幾個字母來縮寫單詞.

int price_count_reader;

// 無縮寫

int num_errors;

// "num" 是乙個常見的寫法

int num_dns_connections;

// 人人都知道 "dns" 是什麼

int n;

// 毫無意義.

int nerr;

// 含糊不清的縮寫.

int n_comp_conns;

// 含糊不清的縮寫.

int wgc_connections;

// 只有貴團隊知道是什麼意思.

int pc_reader;

// "pc" 有太多可能的解釋了.

int cstmr_id;

// 刪減了若干字母.

注意, 一些特定的廣為人知的縮寫是允許的, 例如用 i 表示迭代變數和用 t 表示模板引數.

模板引數的命名應當遵循對應的分類: 型別模板引數應當遵循 型別命名 的規則, 而非型別模板應當遵循 變數命名 的規則.

檔名要全部小寫, 單詞之間用下劃線 _ 隔開。

說明

可接受的檔案命名示例:

my_useful_class.cpp

c++ 檔案要以 .cpp 結尾, 標頭檔案以 .h 結尾. 專門插入文字的檔案則以 .inc 結尾

檔名要具有唯一性,不能和已經存在的檔案同名。

通常應盡量讓檔名更加明確. http_server_logs.h 就比 logs.h 要好. 定義類時檔名一般成對出現, 如 foo_bar.h 和 foo_bar.cpp, 對應於類 foobar.

內聯函式必須放在 .h 檔案中. 如果內聯函式比較短, 就直接放在 .h 中.

型別名稱的每個單詞首字母均大寫, 不包含下劃線: myexcitingclass, myexcitingenum.

說明

所有型別命名 —— 類, 結構體, 型別定義 (typedef), 型別模板引數 —— 均使用相同約定, 即以大寫字母開始, 每個單詞首字母均大寫, 不包含下劃線. 例如:

// 類和結構體

class urltable

;

**宣告為 constexpr 或 const 的變數, 或在程式執行期間其值始終保持不變的, 命名時以 「k」 開頭, 大小寫混合. 例如:const int kdaysinaweek = 7;**

說明

所有具有靜態儲存型別的變數 (例如靜態變數或全域性變數, 參見 儲存型別) 都應當以此方式命名. 對於其他儲存型別的變數, 如自動變數等, 這條規則是可選的. 如果不採用這條規則, 就按照一般的變數命名規則.

函式名的每個單詞首字母大寫 (即帕斯卡變數名)

addtableentry()

deleteurl()

openfileordie

()

命名空間以小寫字母命名. 最高端命名空間的名字取決於專案名稱. 要注意避免巢狀命名空間的名字之間和常見的頂級命名空間的名字之間發生衝突.

頂級命名空間的名稱應當是專案名或者是該命名空間中的**所屬的團隊的名字. 命名空間中的**, 應當存放於和命名空間的名字匹配的資料夾或其子資料夾中.

注意 不使用縮寫作為名稱 的規則同樣適用於命名空間. 命名空間中的**極少需要涉及命名空間的名稱, 因此沒有必要在命名空間中使用縮寫.

要避免巢狀的命名空間與常見的頂級命名空間發生名稱衝突. 由於名稱查詢規則的存在, 命名空間之間的衝突完全有可能導致編譯失敗. 尤其是, 不要建立巢狀的 std 命名空間. 建議使用更獨特的專案識別符號 (websearch::index, websearch::index_util) 而非常見的極易發生衝突的名稱 (比如 websearch::util).

對於 internal 命名空間, 要當心加入到同一 internal 命名空間的**之間發生衝突 (由於內部維護人員通常來自同一團隊, 因此常有可能導致衝突). 在這種情況下, 請使用檔名以使得內部名稱獨一無二 (例如對於 frobber.h, 使用 websearch::index::frobber_internal).

列舉的命名應當和 巨集 一致,使用大寫字母,如:enum_name.取名時要避免與巨集衝突!

說明

enum weekday 

;

全部用大寫,盡量不用

如果你命名的實體與已有 c/c++ 實體相似, 可參考現有命名策略.

bigopen()

: 函式名, 參照 open

() 的形式

uint:

typedef

bigpos:

struct 或 class, 參照 pos 的形式

sparse_hash_map: stl 型實體; 參照 stl 命名約定

longlong_max: 常量, 如同 int_max

c 命名規則

規則3 2 5 如果不得已需要全域性變數,則使全域性變數加字首g 表示global 例如 int g howmanypeople 全域性變數 int g howmuchmoney 全域性變數 規則3 2 6 類的資料成員加字首m 表示member 這樣可以避免資料成員與成員函式的引數同名。例如 vo...

C 命名規則

pascal 規則 帕斯卡命名 每個單詞開頭的字母大寫 如 testcounter camel 規則 大駝峰和小駝峰命名 除了第乙個單詞外的其他單詞的開頭字母大寫.如.testcounter.upper 規則 僅用於一兩個字元長的常量的縮寫命名,超過三個字元長度應該應用pascal規則.例如 pub...

C命名規則

在32 位的系統上short 咔出來的記憶體大小是2 個byte int 咔出來的記憶體大小是4 個byte long 咔出來的記憶體大小是4 個byte float 咔出來的記憶體大小是4 個byte double 咔出來的記憶體大小是8 個byte char 咔出來的記憶體大小是1 個byte。...