马上就要研二了。 曾经在研一开始前写了一段时间的学习日志, 也不知道从那一天开始, 就不在写了。 其实这大概是自己不想那样高调的在朋友圈写日志。 后来觉得写博客了。但是也是断案断续续。 没能坚持下去。 无论如何, 从 今天开始, 决定开启博客, 记录下自己学习的每一个脚印。 也可以供自己在需要的时候便于查看。 无论如隔 , 现在是开始整理所学, 温故而知新。
首先言归正传, 今天翻译了一篇写代码的标准。
首先, 要想成为一名优秀的程序员, 必须按照一定的标准去编写, 排版, 布局自己的代码。好的编程习惯, 不仅能够save 我们在debug事的efforts, 而且对于度程序的人也不是那么的laborious。 无规矩不成方圆, 下面说说要编写elegant 的C++代码过程中, 所需要遵循的 coding style。
1. 逗号‘,’和分号‘;’之前用空格, 不要在空格之后用逗号或者分号。
for (int i; i < 5; i++) {
foo(x1, x2, x3);
}
2.除了->, 其他 任何二元操作符(binary operator)周围使用一个空格。 但是单元运算子(unary operator)不要使用空格。
for (int i = 1; i < 5; i++) {
foo(x1, x2, x3);
}
3.使用同一的大括号的风格。
for (int i = 1; i < 5; i++) {
//code here;
}
or
for (int i = 1; i < 5; i ++)
{
//code here;
}
上述两种风格, 选择一种, stick with it
4.每一次缩进, 空格选择2, 3或者 4, 选择一个数字, 坚持下去
缩进的时候只能使用敲击空格键, 不能敲Tab键。(我选择的是敲击三下空格键作为代码缩进)。
5. 每一行最多80个字符。
6.当表达式比较复杂的时候, 使用括号(parentheses)明确(clarify) 优先级。
int x = (y * z - p * q) >> 2;
if (something == TRUE && anotherThing == false) {
//do something;
}
7. 使用一个一致 的命名大小写规则(
Follow a consistent name-capitalization pattern.)
注意类名的第一个字母一定要大写。 对于一般的名字, 可能有多个单词组成, 此时有几种方式处理名字。例如:camelCase(除了第一个字母, 其他单词的头一个字母大写), UpperCamelCase(每一个单词的都一个字母要大写), using_underscores(使用下划线)等等, 选择一种风格坚持下去。 在这里, 我选择了camelCase风格。
8. 使用空行用于分割程序的不同功能块(using blank lines to separate unites of functionality)。
例如:
void foo() {
//Start the attack on the fribs.
int x = fribbery;
y.attack(frabbet(x));
z.attack(frobbet(x));
//Now send the bejoogers out...
bejooger[0].scramboozle(y);
bejooger[1].scramboozle(y);
bejooger[2].scramboozle(z);
bejooger[3].scramboozle(z);
//Make sure the curdleblogs are still alive.
if (curdleblogpod.getAlive() <= 5) {
//Yikes!
}
}
9. 如果嵌套的块大小超过一行, 使用brackets(即 {})括起来
if (foo) { //好的编程风格,该大括号需要
for (int i = 0; i < 3; i++) {
cout << "Hello there, " << i << endl;
doSomething(i >> 2);
}
}
10. 关键字例如for, if, while 等之后需要加一个空格
例如:
if (foo) { // if 和‘(’之间有一个空格
while (true) { // while 和‘(’之间有一个空格
//do some stuff
}
}
11. ‘)’ 和‘{’之间有一个空格
for (int i = 1; i < 5; i++) {
x = y + z * 15;
foo->callFunction();
}
参考资料 http://courses.cms.caltech.edu/cs11/material/cpp/donnie/cppstyle.html