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

Qt編碼風格

編輯:關於C語言

 

Qt 編碼風格

這是我們編寫Qt代碼時所使用的編碼慣例的一個概述。數據是通過挖掘Qt源碼、論壇、郵件列表以及與開發者的協作而收集起來的。

縮進

采用4個空格

空格,不要用TAB!

變量聲明

每行一個變量

盡可能避免短的變量名(比如“a”, “rbarr”, “nughdeget”)

單字符的變量只在臨時變量或循環的計數中使用

等到真正需要使用時再定義變量

 

?

 

// Wrong

int a, b;

char *c, *d;

 

// Correct

int height;

int width;

char *nameOfThis;

char *nameOfThat;

 

以小寫字符開頭,後續單詞以大寫開頭

避免使用縮寫

 

?

 

// Wrong

short Cntr;

char ITEM_DELIM = '\t';

 

// Correct

short counter;

char itemDelimiter = '\t';

 

類名總是以大寫開頭。公有類以Q開頭(QRgb),公有函數通常以q開頭(qRgb)。

空白

利用空行將語句恰當地分組

總是使用一個空行(不要空多行)

總是在每個關鍵字和大括號前使用一個空格

 

?

 

// Wrong

if(foo){

}

 

// Correct

if (foo) {

}

 

對指針和引用,在類型和*、&之間加一個空格,但在*、&與變量之間不加空格

?

 

char *x;

const QString &myString;

const char * const y = "hello";

二元操作符前後加空白

類型轉換後不加空白

盡量避免C風格的類型轉換

 

?

 

// Wrong

char* blockOfMemory = (char* ) malloc(data.size());

 

// Correct

char *blockOfMemory = reinterpret_cast<char *>(malloc(data.size()));

 

大括號

基本原則:左大括號和語句保持在同一行:

 

?

 

// Wrong

if (codec)

{

}

 

// Correct

if (codec) {

}

 

例外:函數定義和類定義中,左大括號總是單獨占一行:

 

?

 

static void foo(int g)

{

    qDebug("foo: %i", g);

}

 

class Moo

{

};

 

控制語句的body中只有一行時不使用大括號

 

?

 

// Wrong

if (address.isEmpty()) {

    return false;

}

 

for (int i = 0; i < 10; ++i) {

    qDebug("%i", i);

}

 

// Correct

if (address.isEmpty())

    return false;

 

for (int i = 0; i < 10; ++i)

    qDebug("%i", i);

 

例外1:如果父語句跨多行,則使用大括號

 

?

 

// Correct

if (address.isEmpty() || !isValid()

    || !codec) {

    return false;

}

 

例外2:在if-else結構中,有一處跨多行,則使用大括號

 

?

 

 

// Wrong

if (address.isEmpty())

    return false;

else {

    qDebug("%s", qPrintable(address));

    ++it;

}

 

// Correct

if (address.isEmpty()) {

    return false;

} else {

    qDebug("%s", qPrintable(address));

    ++it;

}

 

// Wrong

if (a)

    if (b)

        ...

    else

        ...

 

// Correct

if (a) {

    if (b)

        ...

    else

        ...

}

 

如果控制語句的body為空,則使用大括號

 

?

 

// Wrong

while (a);

 

// Correct

while (a) {}

 

圓括號

使用圓括號將表達式分組

 

?

 

// Wrong

if (a && b || c)

 

// Correct

if ((a && b) || c)

 

// Wrong

a + b & c

 

// Correct

(a + b) & c

 

Switch 語句

case 和switch 位於同一列

每一個case必須有一個break(或renturn)語句,或者用注釋說明無需break

 

?

 

switch (myEnum) {

case Value1:

    doSomething();

    break;

case Value2:

    doSomethingElse();

    // fall through

default:

    defaultHandling();

    break;

}

 

斷行

保持每行短於100 個字符,需要時進行斷行

逗號放一行的結束,操作符放到一行的開頭。如果你的編輯器太窄,一個放在行尾的操作符不容易被看到。

 

?

 

// Correct

if (longExpression

    + otherLongExpression

    + otherOtherLongExpression) {

}

 

// Wrong

if (longExpression +

    otherLongExpression +

    otherOtherLongExpression)

{

}

 

繼承與關鍵字`virtual`

重新實現一個虛函數時,頭文件中 不 放置virtual 關鍵字。

通用例外

如果它使你的代碼看起來不好,你可以打破任何一個規則 。

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