1. 程式人生 > >【C++】C++的命名規則

【C++】C++的命名規則

參考連結Here
C++命名規則
如果想要管理一個稍微複雜一點的體系,針對其中的事物的一套統一、帶有層次、清晰明瞭的命令準則就必不可少而且非常好的工具。
活躍在生物學、化學、軍隊、監獄、黑社會、恐怖組織等各個領域內的大量有識先輩們都曾無數次以實際行動證明了以上的公理的正確性。除了上帝(假設他可以改變世界萬物的秩序)以外,相信沒有人有實力對它不屑一顧。
在軟體開發這一高度抽象而且十分複雜的活動中,命令規則的重要性更顯得尤為突出。一套定義樑浩並且完整的,在整個專案中統一使用命令規範將大大提升原始碼的可讀性和軟體的可維護性。
在引入細節之前,先說明一下命令規則的整體原則:

同一性 在編寫一個子模組或者派生類的時候,需要遵循其基類或整體模組的命令風格,保持命令風格在整體模組的同一性。
識別符號組成 標識符采用英文單詞或其組合,應當直觀且可以拼讀,可望文知意,用詞應當準確。
最小化長度&&最大化資訊量原則 在保持一個識別符號明確意思的同時,應該儘量縮短其長度。
避免過於相似 不要出現緊靠大小寫區分的識別符號,例如“i”“I”,“function”“Function”等。
避免在不同級別的作用域的重名 程式中不要出現名字完全相同的區域性變數和全域性變數,儘管兩者的作用域不同而不會發生語法的錯誤,但是容易使人誤解。
正確命名具有互斥意義的識別符號 用正確的反義詞命名具有互斥意義的識別符號,如:“nMinValue""nMaxValue”
,"GetName()“"SetName()”
避免名字出現數字編號 儘量避免名字出現數字的編號,如Value0Value1Value2等,除非邏輯上的確需要編號。這是為了防止程式偷懶,不肯為命名動腦筋從而導致了產生無意義的名字(因為用數字編號最省事)。

類/結構
除了異常類等個別情況(不希望使用者把類看作一個普通的、正常類的情況)外,C++類結構的命名應該遵循以下準則:

C++類/結構的命名 類的名字都要以大寫的字母“C”開頭,後跟一個或多個單詞。為便於界定,每個單詞的首字母需要大寫。
推薦的組織形式 類的命名推薦用“名詞”或者“形容詞+名詞”的形式,例如:“CAnalyzer”
“CFVecteor”

不同於C++類的概念,傳統的C結構體的命名規則如下:

傳統的C的命名規則 傳統C結構體的名稱全部由大寫字母組成,單詞間使用下劃線界定,例如:“SERVICE_STATUS”,“DRIVER_INFO”

函式

函式的命名 函式的名稱由一個或者多個單片語成。便於界定,每個單詞的首字母要大寫。
推薦的組織形式 函式名應該使用“動詞”或者“動詞+名詞”(動賓片語)形式。例如:“GetName()”“SetName()”“Erase()”“Reserve()”
保護成員函式 保護成員函式的開頭應當加上一個下劃線“_“以示區分,例如”_SetState()”
私有成員函式 類似地,私有成員函式的開頭應當加上兩個下劃線“__”,例如“__DestroyImp()”
虛擬函式 虛擬函式習慣用"Do"開頭,如:“DoRefresh()”,"_DoEncryption()"
回撥和事件處理函式 回撥和事件處理函式習慣以單詞"On"開頭。例如:"_OnTimer()",“OnExit()”

變數
變數應該是程式中使用最多的識別符號了,變數的命名規範可能是一套C++命名準則中最重要的部分。

變數的命名 變數名由作用於字首+型別的綴+一個或多個單片語成。為了便於界定,每個單詞的首字母要大寫。對於某些用途簡單明瞭的區域性變數,也可以使用簡化的方式,如:i,j,k,x,y,z...
作用域字首 作用域字首標明瞭一個變數的可見範圍。作用域可以有以下幾種:
字首 說明
區域性變數
m_ 類的成員變數(member
sm_ 類的靜態成員變數(static member
s_ 靜態變數(static
g_ 外部全域性變數(global
sg_ 靜態全域性變數(static global
sg_ 靜態全域性變數(static global
gg_ 程序間共享的資料段全域性變數(global global)
除非不得已,否則應該儘可能少用全域性變數。
型別的綴
字首 說明
n 整型和位域變數(number)
e 列舉型變數(enumeration)
c 字元型變數(char)
b 布林型變數(bool)
f 浮點型變數(float)
p 指標型變數和迭代子(pointer)
pfn 特別針對指向函式指標變數和函式指標(pointer of function)
g 陣列(grid)
i 類的例項(instance)對於經常用到的類,也可以定義一些專門的字首,如:std::stringstd::wstring類的字首可以定義為"st",std::vector類的字首可以定義為"v"等等
型別的綴可以組合使用,例如"gc"表示字元陣列,"ppn"表示指向整型的指標的指標等等。
推薦的組成形式 變數的名字應當使用"名詞"或者"形容詞+名詞"。例如:"nCode","m_nState","nMaxWidth"...

常量
C++引入了對常量的支援,常量的命名規則如下:

常量的命名規則 常量名由型別字首+全大寫字母組成,單詞間通過下劃線來界定,如cDELIMITER,nMAX_BUFFER…型別字首的定義和變數命名規則中的相同。

列舉、聯合、typedef

列舉、聯合以及typdef的命名 列舉、聯合以及typedef語句生成的型別名全都是大寫字母組成,單詞間通過下劃線界定,如:FAR_PROC,ERROR_TYPE…

巨集、列舉值

巨集、列舉值的命名 巨集和列舉值全大寫字母組成,單詞通過下劃線界定,如:ERROR_UNKNOWN,OP_STOP…

相關推薦

C++C++的命名規則

參考連結:Here C++命名規則 如果想要管理一個稍微複雜一點的體系,針對其中的事物的一套統一、帶有層次、清晰明瞭的命令準則就必不可少而且非常好的工具。 活躍在生物學、化學、軍隊、監獄、黑社會、恐怖組

C#命名規範

form fun upper customers font HA tex 語法 obj 原文地址:http://www.jb51.net/article/57163.htm 本文詳細匯總了C#常用的命名規則。分享給大家供大家參考。具體如下: Pascal 規則每個單詞開頭的

11、C++匈牙利命名

    對於程式中的變數名稱,有人主張儘量讓變數名簡單易懂。在定義變數時,不僅讓變數名稱易於理解,而且資料型別、屬效能夠一眼看出,這種觀念的命名稱為匈牙利命名。     匈牙利命名法是一種程式設計時的命名規範。這種命名法的出發點是把變數名按:屬性+型別+物件描述的順序組合起來,以使程式設計師

c#之繼承

none 實現 void 運算符重載 調用方法 需要 strong 靜態 顯式 一.繼承的類型   在面向對象的編程中,有兩種截然不同繼承類型:實現繼承和接口繼承   1.實現繼承和接口繼承   *實現繼承:表示一個類型派生於基類型,它擁有該基類型的所有成員字段和函

C#之集合

tab 並發集合 get spa style con 都在 src 字典  數組(http://www.cnblogs.com/afei-24/p/6738128.html)的大小是固定的。如果元素的個數是動態的,就應使用集合類。     列表(http://www.cn

C# 高性能 TCP 服務的多種實現方式

http c# del sha 開源 https tar .com targe 原文鏈接: http://www.cnblogs.com/gaochundong/p/csharp_tcp_service_models.html 開源庫: https://g

基礎C#異常處理的總結

ember -s 有效 理解 dac 十進制 reference bsp msil 一、異常處理的理解? 異常處理是指程序在運行過程中,發生錯誤會導致程序退出,這種錯誤,就叫做異常。 因此處理這種錯誤,就稱為異常處理。 二、異常處理如何操作? C# 異常處

整理C#文件操作大全(SamWang)

cto read image creating ram exceptio file類 詳細 ima 文件與文件夾操作主要用到以下幾個類:   1.File類:   提供用於創建、復制、刪除、移動和打開文件的靜態方法,並協助創建 FileStre

.Netc# 讓double保留兩位小數

con orm tr1 ima 一個 dbd for tin git 1、Math.Round(0.333333,2);//按照四舍五入的國際標準2、 double dbdata=0.335333; string str1=String.Format("{0:F

C#獲取客戶端及服務器端主機信息及其獲取IP地址

string c# forward ria 工具 ip地址 客戶 ext add 原文發布時間為:2009-10-28 —— 來源於本人的百度文章 [由搬家工具導入]小结:1、REMOTE_ADDR 不&

C#計算兩坐標點距離

誤差 param 返回 ear 半徑 tdi col ng2 地球 //地球半徑,單位米 private const double EARTH_RADIUS = 6378137; /// <summary>

C語言之變量存儲類型

art 技術分享 .net ont alt enter fill img 分享 【精】C語言之變量存儲類型

C++可變參數列表處理宏va_list、va_start、va_end的使用

sin 不同 struct rto snprintf 指定 cnblogs 最小 多個 VA_LIST是在C語言中解決變參問題的一組宏他有這麽幾個成員: 1)va_list型變量: #ifdef _M_ALPHA typedef struct{ char*  

C語言文件操作詳解

pri void rfi 識別 archive format 隨機 stat 文本文 轉自:http://www.cnblogs.com/likebeta/archive/2012/06/16/2551780.html C語言中沒有輸入輸出語句,所有的輸入輸出功能都用

C#中的兩把雙刃劍:抽象類和接口

實例 可維護 對象 為什麽不使用 程序 一定的 代碼 方式 索引 轉:http://www.cnblogs.com/djzxjblogs/p/7587735.html 第一次面試的時候, 面試官問我,抽象類和接口的區別。 本人也是,按照面試寶典上的回答,說了一大堆。

轉載C++自由存儲區是否等價於堆

destroy 對象池 when for default 維護 iat glob delete “free store” VS “heap” 當我問你C++的內存布局時,你大概會回答: “在C++中,內存區分為5個區,分別是堆、棧、自由存儲區、全局/靜態存儲區、常量存儲區

C++中const在函數名前面和函數後面的區別

const成員函數 調用 參數傳遞 成員 指向 int 區別 ... urn 一、概念   當const在函數名前面的時候修飾的是函數返回值,在函數名後面表示是常成員函數,該函數不能修改對象內的任何成員,只能發生讀操作,不能發生寫操作。 二、原理:   我們都知道在調用

C# list介紹和用法

php 檢索 排序 c# reac ont 面向對象 類型 大型 一、LIST概述 所屬命名空間:System.Collections.Generic public class List<T> : IList<T>, ICollection

C#C#實現事務

identity title ini body pro 簡單例子 ear scalar 技術分享 1、創建事務的結構 SqlConnection sqlConnection = new SqlConnection(); ...初始化連

轉載C# sleep 和wait的區別

通知 sdn 代碼 blog tool ogr rul smart abs eep和wait都是使線程暫時停止執行的方法,但它們有很大的不同。 1. sleep是線程類Thread 的方法,它是使當前線程暫時睡眠,可以放在任何位置。 而wait,它是使當前線程暫時放棄對象的