总结
1. C++技巧
- 头文件扩展名包括“.h”、“.hpp”、“hxx”,源文件扩展名包括“.c”、“.cpp”、“cxx”。
- 关于改名。比如想将在Visual Studio中将某个函数/类的名字重新修改一下,一个一个改就很麻烦。若为函数,可以直接在函数名上右键“快速操作与重构”;若为类,可以直接在类名右键“重命名”。
2.
C++代码规范
- 1:只要能增强可读性,你在编码时可以不遵守这些编程风格指南(一语道尽规范的目的)。
- 2:如果你有很好的个人理由的话,可以不遵守这些规范。
-
3:代表
类型的名字
必须首字母大写并且其它字母大小写混合。例如:
Line, SavingsAccount
-
4:
变量名
必须混合大小写且以小写字母开头。例如:
empJack
。 -
5:
符号常量(包括枚举值)
必须全部大写并用下划线分隔单词。例如:
MAX_ITERATIONS, COLOR_RED, PI
。 - 11:若类的成员函数参数与私有成员变量名相同,那么参数名应加下划线后缀。
class SomeClass {
int length;
public:
void setLength( int length_ );
//……
}
-
8:用于表示模板类型的名字应该使用一个大写字母,例如
template <typename T>
、
template <class C, class D>
。 - 12: 一般变量的名字应该与变量的类型相同;特定变量都是有角色的,这类变量经常用角色加上类型命名。
//两个例子:名称与类型相同
void setTopic(Topic* topic)
// NOT: void setTopic(Topic* value)
// NOT: void setTopic(Topic* aTopic)
// NOT: void setTopic(Topic* t)
void connect(Database* database)
// NOT: void connect(Database* db)
// NOT: void connect (Database* oracleDB)
//两个例子:名称=角色+类型
Point startingPoint, centerPoint;
Name loginName;
- 14:大作用域的变量应使用长名字,小作用域的变量应使用短名字。
-
23:表示对象数量的变量名应加前缀
n
。例如:
nPoints
、
nLines
。 -
24:代表实体编号的变量应加后缀
No
,例如
tableNo
、
employeeNo
。另外一种比较优雅的方法是加上前缀
i
,例如
iTable
、
iEmployee
,这样让他们的名字变成一个迭代器。 - 25:迭代变量名应该用 i, j, k 等。此外,变量名 j, k应只被用于嵌套循环。
-
26:布尔变量/函数的命名应使用前缀“is”,如
bool isRunning
。 - 34:文件扩展名:头文件用.h,源文件用 .cpp (c++, cc也可)。
-
35:类应该在头文件中声明并在源文件中定义,俩文件名字应该与类名相同。例如:
MyClass.h
,
MyClass.cpp
。例外的是,模板类的声明和定义都要放在头文件中。 - 38:不允许使用“制表”、“分页”等特殊字符,应该都在IDE中转换成空格。
- 39:断行必须很明显。在逗号或运算符后换行,新行要对齐。
- 41:包含语句应排序并分组。排序时,按其在系统中的层次位置,较低层的头文件写在前面,较高层的头文件写在后面。并且要用空行分隔分组的包含语句。包含文件的路径中,也一定不要使用绝对路径。
#include <fstream>
#include <iomanip>
#include <qt/qbutton.h>
#include <qt/qtextfield.h>
#include "com/company/ui/PropertiesDialog.h"
#include "com/company/ui/MainWindow.h"
- 42:包含语句必须放在文件的顶部。将包含语句放到源代码的其它位置,可能会导致预期之外的编译副作用。
-
45:类型转换必须显式声明。永远不要依赖隐式类型转换。
例如:
floatValue = static_cast<float>(intValue);
NOT
floatValue = intValue;
- 46:变量应在其声明处初始化。对于非常非常新的初学者,变量在函数的最前面一起声明并初始化,可以避免重复使用同一个变量名导致的编译错误。老手可以忽略。
-
49:类成员变量不可被声明为public。说明:公有变量违背了C++的信息隐藏原则。例外的是,如果
class
只是一个数据结构,类似C语言中的
struct
,则可将类变量声明为公有。 -
51:C++指针与引用符号应靠近其类型而非名字。例:
int& rx=x;
NOT
int &rx=x;
- 68:函数必须将返回值明确列出。
- 71:基本缩进保持为2个空格(4个也可以)。如果要大量使用标准库中的函数或者类,可能会导致代码中的某一行变得非常长,这种情况下保持基本缩进为2个空格,有助于减少一行的长度。
- 73:类声明应采用下面的形式:(但其实大部分IDE会自动将public等访问控制关键字紧靠左侧边界对齐顶格写,这时就不用理会这条规则)
class SomeClass : public BaseClass
{
public:
...
protected:
...
private:
...
}
- 74:方法定义应遵循如下形式:(但实际上大括号不另起一行也行)
void someMethod()
{
...
}
- 76:标准for循环格式如下:
for (initialization; condition; update) {
statements;
}
- 77:循环体为空的for循环格式如下:(这种方式强调了for语句为空,读者很容易看到这是代码编写者故意写的。但是应该尽量避免空循环。)
for (initialization; condition; update)
;
- 78:while循环语句格式如下:
while (condition) {
statements;
}
- 79:do-while循环语句格式如下:
do {
statements;
} while (condition);
- 84:一些关于空格的编码规范:
- 运算符前后应有空格。
- C++保留字后边应有空格。
- 逗号后面跟空格。
- 冒号前后有空格。
- for语句的分号后有空格。
目前很多集成开发环境都会在代码编写的过程中自动纠正代码的格式。在集成开发环境中也会有关于何处加空格的设置项。我们可以把加空格这种事情都交给集成开发环境来搞定。下面是一些示例:
a = (b + c) * d; // NOT: a=(b+c)*d
while (true) // NOT: while(true)
{ ··· }
doSomething(a, b, c, d); // NOT: doSomething(a,b,c,d);
case 100 : // NOT: case 100:
for (i = 0; i < 10; i++) { // NOT: for(i=0;i<10;i++){
...
版权声明:本文为weixin_46258766原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。