干貨 | Qt編程規(guī)范

干貨 | Qt編程規(guī)范的圖1
*編輯注:
文章作者:51CTO博客用戶“mb5fd86853067b7”
文章鏈接:https://blog.51cto.com/u_15057811/4162882

一、概述

良好的編程規(guī)范可以大幅提高一個程序的可讀性、可理解性和可維護(hù)性。
本規(guī)范參考Effective C++中文版、Google C++編碼規(guī)范及Qt編碼風(fēng)格。
干貨 | Qt編程規(guī)范的圖2
二、頭文件
1) #define保護(hù)
所有頭文件都應(yīng)該使用#define防止頭文件被多重包含,命 名格式為: <Projec tName>_<FileName>_H ,例如:
#ifndef MAP_MAINWINDOW_H#define MAP_MAINWINDOW_H……#endif //MAP_MAINWINDOW_H
2)頭文件依賴
使用前聲明,盡量減少.h文件中#include的數(shù)量。
3)頭文件包含次序
將包含次序標(biāo)準(zhǔn)化可增強可讀性,次序如下:C庫頭文件、C++庫頭文件、其他庫的頭文件、項目內(nèi)的頭文件。
三、命名約定
1)通用命名約定
避免使用縮寫。
2)文件命名
文件名全部小寫,可以包含下劃線,例如:
my_test_class.hmy_test_class.cppmytestclass.hmytestclass.cpp
3)類命名
類名是名詞,每個單詞以大寫字母開頭,不包含下劃線,且名前加大寫字母C,例如:
CMySystemWatcherCClockBattery
4)變量命名
變量名是名詞,首單詞以小寫字母開頭,后續(xù)單詞以大寫字母開頭。每行一個變量,單字符的變量只在臨時變量或循環(huán)計數(shù)中使用。
類成員變量需在變量名前加m_前綴,例如:
int m_myValue;
局部變量等到需要使用時再定義變量,且定義時必須初始化,整數(shù)用0,實數(shù)用0.0,指針用NULL,字符(串)用'\0'。例如:
int myValue=0;
盡量不要使用全局變量,以降低耦合。若使用能帶來極大便利,命名時需在變量前加g_前綴,例如:
int g_myValue;
5)常量命名
常量不含前綴且應(yīng)該大寫,單詞間有下劃線,包括全局常量和宏定義,例如:
const int MY_VALUE=0;#define MY_VALUE 0
6)函數(shù)命名
函數(shù)名是動詞或含有動詞的短語,首單詞以小寫字母開頭,后續(xù)單詞以大寫字母開頭,例如:
int getMyValue();int setMyeValue(int value)
函數(shù)參數(shù)所有字母小寫,單詞間有下劃線,若為非基本數(shù)據(jù)類型,使用const引用,例如:
setColor(const QColor & new_color)
7)枚舉命名
枚舉名和枚舉值都是名詞,每個單詞以大寫字母開頭,且第一個單詞是Enum,例如:
enum EnumMyColor //枚舉名{EnumWhite, //枚舉值EnumBlack};
8)命名空間
命名空間的名稱是名詞,每個單詞以大寫字母開頭,且前兩個單詞是BaiDi,例如:
namespace BaoDiProject{ }
9)結(jié)構(gòu)體命名
結(jié)構(gòu)體中只定義變量,不定義函數(shù)。
結(jié)構(gòu)體名是名詞,每個單詞以大寫字母開頭。
結(jié)構(gòu)體成員名詞,首單詞以小寫字母開頭,后續(xù)單詞以大寫字母開頭。例如:
struct MyColor{ boolisMyColor; int white;};
干貨 | Qt編程規(guī)范的圖3

四、代碼注釋

1)注釋風(fēng)格
使用//或/**/,統(tǒng)一就行。一般情況下,源程序有效注釋量必須在20%以上,不易理解的地方都需加上注釋,注釋不宜太多也不能太少。
2)類注釋
類的頭文件頂部需添加說明性注釋,包括版權(quán)說明、版本號、作者、生成日期、類的功能描述等。
/*******************************************************Copyright(C), 2015-2025, Baodi Technology.**Version:**Author:**Date:**Description://類用途描述*****************************************************/
3)函數(shù)注釋
重要函數(shù)頭部應(yīng)該進(jìn)行注釋,包括函數(shù)名、函數(shù)功能描述、輸入?yún)?shù)、輸出參數(shù)、返回值及其他。
/***************************************************Function: // 函數(shù)名稱**Description: // 函數(shù)功能描述**Input:  // 輸入?yún)?shù)說明,包括每個參數(shù)的作用、取值說明**Output: // 對輸出參數(shù)的說明**Return: // 函數(shù)返回值的說明**Others: // 其它說明*************************************************/
4)變量注釋
通常變量名本身足以說明變量用途,特定情況下,需要額外注釋說明。變量注釋位于變量上方,例如:
//keepstrack of the total number of entries in the tableint totalNumber;
5)實現(xiàn)注釋
對于實現(xiàn)代碼中巧妙的、晦澀的、重要的地方加以注釋。
出彩或復(fù)雜的代碼塊上方要加以注釋,例如:
// Divide result by two, taking into account that x// contains the carry from the add.for(int i=0;i<100;i++){x=(x<<8)+(*result)[i];(*result)=x>>1;x&=1;}
比較晦澀的地方可在行尾,代碼之后空兩格加注釋,例如:
if(……){ …… return; //return while meetingthe conditions}
6) TODO注釋
計劃中但未完成的代碼使用TODO注釋,例如:
void CMyClass::function(){ //TODO}

五、代碼排版

1)行長度
較長的語句(>80字符)要分成多行書寫,長表達(dá)式要在較低優(yōu)先級操作符處劃分新行,操作符放在新行之首,逗號放在一行的結(jié)束,劃分出的新行要進(jìn)行適當(dāng)?shù)目s進(jìn),使排版整齊,語句可讀,例如:
if ((taskOne < taskNumber)&&(taskTwo < taskNumber)&&(taskThree< taskNumber)){ ……}
2)縮進(jìn)
使用4個空格進(jìn)行代碼縮進(jìn),不要用Tab鍵。但是對于由開發(fā)工具自動生成的代碼可以有不一致。
預(yù)處理指令不要縮進(jìn),從頂格開始,例如:
if(isActive()){#if DISASTER_PENDING dropEverything();#endif backToNormal();}
3)空行
空行可將語句進(jìn)行適當(dāng)?shù)姆纸M,便于閱讀,在相對獨立的代碼塊之間必須加一行空行。
4)大括號
大括號永遠(yuǎn)單獨占一行,不跟在語句后面。如果控制語句(if、while、for、switch)體為空或者只有一行,也要使用大括號,例如:
if ( address.isEmpty( ) ){return false;}switch(value){ case 0:{ get Electricity(); break;}default:{ break;}}
5)圓括號
使用圓括號將表達(dá)式分組,即使運算符的優(yōu)先級相同,也要用圓括號進(jìn)行分組,例如:
if ( ( a && b) | | c)
六、重要原則
正確性>穩(wěn)定性>可測試性>可讀性>全局效率>局部效率>個人習(xí)慣
a)正確性,指程序要實現(xiàn)設(shè)計要求的功能;
b)穩(wěn)定性、安全性,指程序穩(wěn)定、可靠、安全;
c)可測試性,指程序要具有良好的可測試性;
d)規(guī)范/可讀性,指程序書寫風(fēng)格、命名規(guī)則等要符合規(guī)范;
e)全局效率,指軟件系統(tǒng)的整體效率;
f)局部效率,指某個模塊/子模塊/函數(shù)的本身效率;
g)個人表達(dá)方式/個人方便性,指個人編程習(xí)慣。



深圳市優(yōu)飛迪科技有限公司成立于2010年,是一家專注于產(chǎn)品開發(fā)平臺解決方案與物聯(lián)網(wǎng)技術(shù)開發(fā)的國家級高新技術(shù)企業(yè)。

十多年來,優(yōu)飛迪科技在數(shù)字孿生、工業(yè)軟件尤其仿真技術(shù)、物聯(lián)網(wǎng)技術(shù)開發(fā)等領(lǐng)域積累了豐富的經(jīng)驗,并在這些領(lǐng)域擁有數(shù)十項獨立自主的知識產(chǎn)權(quán)。同時,優(yōu)飛迪科技也與國際和國內(nèi)的主要頭部工業(yè)軟件廠商建立了戰(zhàn)略合作關(guān)系,能夠為客戶提供完整的產(chǎn)品開發(fā)平臺解決方案。

優(yōu)飛迪科技技術(shù)團(tuán)隊實力雄厚,主要成員均來自于國內(nèi)外頂尖學(xué)府、并在相關(guān)領(lǐng)域有豐富的工作經(jīng)驗,能為客戶提供“全心U+端到端服務(wù)”。

干貨 | Qt編程規(guī)范的圖4

登錄后免費查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項目客服
  • 培訓(xùn)客服
  • 平臺客服

TOP