Qt官方编码Style

简 述: Qt_Coding_StyleQt官方编码风格;

缩进:

  • 4个空格用于缩进
  • 空格,而不是制表符!

声明变量:

  • 在单独的行中声明每个变量
  • 避免使用简短或无意义的名称(例如“ 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 = ' ';

 // Correct
 short counter;
 char itemDelimiter = ' ';
  • 类始终以大写字母开头。Public classes 以“ Q”(QRgb)开头,后跟一个大写字母。Public functions通常以“ q”(qRgb)开头。
    首字母缩写使用驼峰式(例如QXmlStreamReader,而不是QXMLStreamReader)。

空格:

  • 使用空行将语句组合在一起
  • 始终只使用一个空白行
  • 始终在关键字之后和花括号前使用一个空格:
 // 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 (foo) bar();

 // Correct
 if (foo)
     bar();

大括号:

  • 使用附带的括号:开头的括号与语句的开头在同一行。如果右括号后面紧跟着另一个关键字,则它也会进入同一行:
 // Wrong
 if (codec)
 {
 }
 else
 {
 }

 // Correct
 if (codec) {
 } else {
 }
  • 例外:函数实现(但不包括lambdas)和类声明始终在行首处使用左括号:
static void foo(int g)
 {
     qDebug("foo: %i", g);
 }

 class Moo
 {
 };
  • 仅当条件语句的主体包含多行时才使用花括号:
 // 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-then-else块中,如果if代码或else代码覆盖几行,也要使用花括号:
 // Wrong
 if (address.isEmpty())
     qDebug("empty!");
 else {
     qDebug("%s", qPrintable(address));
     it;
 }

 // Correct
 if (address.isEmpty()) {
     qDebug("empty!");
 } else {
     qDebug("%s", qPrintable(address));
     it;
 }

 // Wrong
 if (a)else
     if (b)// Correct
 if (a) {} else {
     if (b)}
  • 条件语句的主体为空时使用花括号
 // Wrong
 while (a);

 // Correct
 while (a) {}

括号:

  • 使用括号将表达式分组:
 // Wrong
 if (a && b || c)

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

 // Wrong
 a + b & c

 // Correct
 (a + b) & c

切换语句:

  • case标签与开关在同一列中
  • 每个case的末尾都必须有一个break(或return)语句,或者Q_FALLTHROUGH()用来表明没有故意的中断,除非立即发生另一case
 switch (myEnum) {
 case Value1:
   doSomething();
   break;
 case Value2:
 case Value3:
   doSomethingElse();
   Q_FALLTHROUGH();
 default:
   defaultHandling();
   break;
 }

跳转语句(中断,继续,返回和跳转):

  • 不要在跳转语句后加上“ else”:
 // Wrong
 if (thisOrThat)
     return;
 else
     somethingElse();

 // Correct
 if (thisOrThat)
     return;
 somethingElse();
  • 例外:如果代码本质上是对称的,则允许使用“ else”来可视化该对称性

换行:

  • 保持少于100个字符的行;必要时包裹
  • 注释/ apidoc行应保留在实际文本的80列以下。适应周围的环境,并尝试以避免出现“锯齿状”段落的方式使文本流畅。
  • 逗号放在换行符的末尾;运算符从新行的开头开始。如果编辑器太窄,则很容易错过该行末尾的运算符。
 // Wrong
 if (longExpression +
     otherLongExpression +
     otherOtherLongExpression) {
 }

 // Correct
 if (longExpression
     + otherLongExpression
     + otherOtherLongExpression) {
 }

一般例外:

  • 当严格遵循规则会使您的代码看起来很糟糕时,请随意破坏它。
  • 如果在任何给定的模块中存在争议,则维护者对接受的样式拥有最终决定权(根据Qt管治模型)。

艺术风格:

  • 以下代码片段可以按艺术风格用于重新格式化代码。
--style=kr 
--indent=spaces=4 
--align-pointer=name 
--align-reference=name 
--convert-tabs 
--attach-namespaces
--max-code-length=100 
--max-instatement-indent=120 
--pad-header
--pad-oper
  • 注意“ unlimited” --max-instatement-indent仅用于因为如果后续行需要缩进限制,那么astyle不够聪明,无法包装第一个参数。建议您手动将语句内缩进限制为大约50个列:
    int foo = some_really_long_function_name(and_another_one_to_drive_the_point_home(
            first_argument, second_argument, third_arugment));

翻译于英文官网:https://wiki.qt.io/Qt_Coding_Style

偕臧x CSDN认证博客专家 架构 Qt/C++ Linux
看待世界始终保持着好奇;期待与各位的邂逅,比较喜欢Linux、C++、Qt和与技术无关的生活相关,不时折腾一下新技术,欢迎来此处https://ifmet.cn 找我玩
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 猿与汪的秘密 设计师:白松林 返回首页