如果它使你的代码看起来不好,你可以打破任何一个规则
。
缩进
变量
- 每行一个变量
- 尽可能避免短的变量名
- 单字符的变量只在临时变量或循环的计数中使用
- 等到真正需要使用时再定义变量
// 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';
补充
在Qt例子编写中,对变量名有如下建议:
void MyClass::setColor(const QColor &color;)
{
this->color = color;
}
或
void MyClass::setColor(const QColor &newColor;)
{
color = newColor;
}
避免使用
(意义不明确的字符):
void MyClass::setColor(const QColor &c)
{
color = c;
}
注意:在构造函数中,会遇到同样的问题。但无论你信与不信,下面的可以工作
MyClass::MyClass(const QColor &color;)
: color(color)
{
}
空白
- 利用空行将语句恰当地分组
- 总是使用一个空行(不要空多行)
- 总是在每个关键字和大括号前使用一个空格
// 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
x = rect.x();
y = rect.y();
width = rect.width();
height = rect.height();
大括号
// Wrong
if (codec)
{
}
// Correct
if (codec) {
}
class Moo
{
};
// Wrong
if (address.isEmpty()) {
return false;
}
// Correct
if (address.isEmpty())
return false;
if (x) {
// do something strange
yyyyyyyyy = yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy +
zzzzzzzzzzzzzzzzzzzzzz;
}
// 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
...
}
// 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 (dsfljfsfskjldsjkljklsjdk
&& fdsljsjdsdljklsjsjkdfs
&& dsfljkdfjkldksdfjdjkfdksfdkjld) {
sadjdjddadhsad;
}
//Correct
if (dsfljfsfskjldsjkljklsjdk
&& fdsljsjdsdljklsjsjkdfs
&& dsfljkdfjkldksdfjdjkfdksfdkjld) {
sadjdjddadhsad;
}
对 whle 或else if,不存在这个问题:
while (dsfljfsfskjldsjkljklsjdk
&& fdsljsjdsdljklsjsjkdfs
&& dsfljkdfjkldksdfjdjkfdksfdkjld) {
sadjdjddadhsad;
}
补充
- Qt 例子中比前面的标准100严格一点,采用的是80.
- Qt Quarterly 中采用的是 58
- Qt 书籍中采用的是 68 (?)
继承与virtual
- 重新实现一个虚函数时,头文件中不放置 virtual 关键字
分享到:
相关推荐
qt 编码规范 风格,学习qt的可以参考一下
\18.4 自定义风格插件 455 \18.5 小结 458 \第19章 脚本——QtScript 459 \19.1 执行ECMAScript脚本 459 \19.2 QtScript中的信号和槽 460 \19.3 使用JavaScript操作Qt对象 463 \19.4 基于Prototype的继承 467 \19.5 ...
\18.4 自定义风格插件 455 \18.5 小结 458 \第19章 脚本——QtScript 459 \19.1 执行ECMAScript脚本 459 \19.2 QtScript中的信号和槽 460 \19.3 使用JavaScript操作Qt对象 463 \19.4 基于Prototype的继承 467 ...
仅供参考学习,内部没有注释,因为编码问题,没有很好的兼容,注释英文又太不合自己风格,所以略部分。不懂的部分可以自己翻文档,是非常简单的。我博客有搭建的ODBC教程,QT5MSVC+sqlserver
exploit,Arduino,嵌入式,课设,java索引QT practice //QT 练习代码LinuxHelloWorldsignalslotc++ primer plus//《C++ primer plus》笔记及练习代码c++ programming style//《C++ 编码风格》笔记及练习代码c++ qt ...
对于独立开发者,花点时间设计自己的编码风格也是有助于提高能力的,至少可以在看到自己代码的时候感觉美美哒~~。本文参考了,<Qt>,当然还有维基百科,以后不累述。 1.1.常见命名法 蛇形命名法 [snake_case]: ...
构建过程也可以通过以下命令从命令行执行: $ cd itchio-app$ make$ ./build/itchio 有关可用make目标的更多信息,请阅读提供的帮助页面$ make help编码风格clang-format用于格式化代码库。 要格式化所有源文件,请...
马上圣诞节了,作为一名程序猿,如何体现自己独特的过节风格,如何在朋友圈发一张专属自己的祝福照片我觉得很有必要,你们说是不是。 谈到圣诞节,话说程序猿和圣诞之间的关系还有这么一个笑话: Q:程序员为什么...
它是游戏场景中现代风格的客户端,具有直观的用户界面,经过特殊设计的脚本框架和非常快速的文本显示。 这样,再加上跨平台功能和开源开发模型,就可以打造出非常讨人喜欢的游戏客户端。 主要特点 使用简单 非常...
1. Introduction to Zend Framework 1.1. 概述 1.2. 安装 2. Zend_Acl 2.1. 简介 2.1.1. 关于资源(Resource) 2.1.2. 关于角色(Role) 2.1.3. 创建访问控制列表(ACL) ...2.1.5. 定义访问控制 ...