Qt官方代码风格,可以参考一下。
缩进 使用4个空格;
注意:使用空格而不是制表符(Tab按键)。
声明变量 在单独的行上声明每个变量;
避免使用简短或无意义的名称(例如"a",“rbarr”,“nughdeget”);
单个字符变量名称仅适用于计数器和临时变量,其中变量的目的是为了显而易见;
不恰当用法: int a, b; char*c,*d;
纠正:
int height; int width; char*nameOfThis; char*nameOfThat;
变量和函数以小写字母开头。变量名称中的每个连续单词都以大写字母开头;
避免使用缩写;
不恰当用法:short Cntr;// 不明确的缩写 char ITEM_DELIM =' ';
纠正:
short counter; char itemDelimiter =' ';
类始终以大写字母开头。如公共类以’Q’(QRgb)开头,后跟大写字母。公共函数通常以’q’(qRgb)开头;
首字母缩略词是驼峰式(例如QXmlStreamReader,而不是QXMLStreamReader)。
空白符 使用空行将语句组合在一起;
始终只使用一个空白行;
- 始终在关键字之后和大括号之前使用单个空格;
不恰当用法:
if(foo){ }
纠正:
if(foo){ }
对于指针或引用,始终在类型和* 或& 之间使用单个空格,但在* 或& 与变量名称之间没有空格;
char*x; const QString &myString; constchar*const y ="hello";
用空格包围二进制运算符;
每个逗号后留一个空格;
转换模式的使用后没有空格;
- 尽可能避免使用C风格的转换;
不恰当用法:
char* blockOfMemory =(char*)malloc(data.size());
纠正:
char*blockOfMemory =reinterpret_cast<char*>(malloc(data.size()));
不要在同一行上放置多个语句;
控制流语句的主体上使用一个新行;
不恰当用法:if(foo)bar();
纠正:
if(foo) bar();
花括号 使用附加花括号的情况:左花括号与语句的开头位于同一行。如果右花括号后跟另一个关键字,它也会进入同一行;
不恰当用法:if(codec) { } else { }
纠正:
if(codec){ }else{ }
例外情况:函数实现(但不是lambda)和类声明总是在行的开头有左括号;
staticvoidfoo(int g) { qDebug("foo: %i", g); }
classMoo { };
不恰当用法:if(address.isEmpty()){ returnfalse; }
for(int i =0; i <10;++i){ qDebug("%i", i); }
纠正:
if(address.isEmpty()) returnfalse;
for(int i =0; i <10;++i) qDebug("%i", i);
例外1:如果父条件语句包含多行或换行,也可以使用花括号:
if(address.isEmpty()||!isValid() ||!codec){ returnfalse; }
例外2:支持对称:在if-then-else块中也使用花括号,其中if-code或else-code包含多行:
不恰当用法:if(address.isEmpty()) qDebug("empty!");// 这里不对称,容易造成误解 else{ qDebug("%s",qPrintable(address)); it; }
纠正:
if(address.isEmpty()){ qDebug("empty!"); }else{ qDebug("%s",qPrintable(address)); it; }
不恰当用法:
// 多级嵌套语句没花括号容易逻辑错误 if(a) … else if(b) …
纠正:
if(a){ … }else{ if(b) … }
不恰当用法:while(a);
纠正:
while(a){}
括号 不恰当用法:if(a && b || c)
纠正:
if((a && b)|| c)
不恰当用法:
a + b & c
纠正:
(a + b)& c
switch语句 case与switch位于同一列;
每个case必须在结尾处有一个break(或return)声明,例外:
用于Q_FALLTHROUGH()表示故意不中断;
case后立刻进入下一个case。
switch(myEnum){ case Value1: doSomething(); break; case Value2:// case后立刻进入下一个case case Value3: doSomethingElse(); Q_FALLTHROUGH(); default: defaultHandling(); break; }
跳转语句(break, continue, return, and goto) 不恰当做法:if(thisOrThat) return; else somethingElse();
纠正:
if(thisOrThat) return; somethingElse();
例外:如果代码本质上是对称的,则允许使用’else’来显示对称性。
换行 保持一行短于100个字符并在必要时换行。
注释/函数说明行应保持在80列实际文本之下。调整周围的文本布局,并尝试以避免“锯齿状”段落的方式流动文本。
在换行后的末尾加上逗号。
操作符从新行开始。如果编辑器太窄,则很容易忽略行尾的操作符。
不恰当用法:if(longExpression + otherLongExpression + otherOtherLongExpression){ }
纠正:
if(longExpression + otherLongExpression + otherOtherLongExpression){ }
一般例外 如果严格遵循规则会使您的代码看起来很糟糕,请随意打破它。
如果任何给定模块中存在争议,则维护者对可接受的样式有最终决定权。
ref: https://wiki.qt.io/Qt_Coding_Style ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:Qt君,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ----------------------------------------------------------------------------------------------------------------------
|