20180925-5 代码规范,结对要求
作业要求参见[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2147]
结对伙伴:李文涛[http://www.cnblogs.com/silentteller/]
C++编码规范
1.缩进:因Tab键在不同情况下会显现不同的长度,使用起来阅读体验不佳,故缩进4个空格作为缩进。
如:
if(a>b) { a=b; //缩进为四个空格 }
2.行宽:行宽太小,分行太多,翻页太多;行宽太大,右侧看不见,需横向移动,都影响阅读体验。老式计算机行宽为80,现在的计算机可以定为100,可以尽量提高阅读体验。
3.括号:灵活运用括号进行优先级划分,可以通过括号提高阅读逻辑判断速度时,也应该加上括号。
如:
#define MAX ((a>b?a:b)>c?(a>b?a:b):c)
4.断行与分行:多断行,每行至多一个符号,不让代码看起来长篇冗余,同时运用{}进行结构上的划分,同时{}也是独占一行,使结构更加清晰明了。
如:
if(a>b) { a=b; } else { a=c; }
5.命名:除了一些强类型语言之外,其他语言多使用“匈牙利命名法”给变量命名,给变量加上前缀,是程序员能够一眼就看出该变量的类型及相应的语义。
如:
fFileExist:表明是一个bool变量,表示文件是否存在。
szPath:表明是一个字符串,表示一个路径。
6.下划线:下划线可以用作标识符的前缀,如_path,或者用来分隔变量名中的作用域标注和变量的语义,如用m_来表示一个类型的成员变量。
7.大小写:所有的类型、类、函数名采用Pascal形式,即:所有单词的第一个字母都大写,所有的变量采用Camel形式,即:第一个单词全部小写,随后单词随Pascal形式。
如:
void GetName() { ... } int totalNumber;
8.注释:注释用来解释程序在做什么,为什么这么做,以及需要特别注意的地方。复杂函数将注释放在函数头,注释只应该由ASCII码组成,便于移植。
//go thru the array, note the last element is at [len-1] for(int i=0;i<len;i++) { sum+=a[i]; }
9.初始化:在声明变量时,就对变量进行初始化,多个变量分开成行。
如:
int a=0; int b=1;
10.变量声明:变量在块开始前就进行声明,而不是在用到时才进行声明。
如:
int count=0; ... for(int i=0;i<len;i++) { count++; }
本次编程中代码规范执行情况:
代码要求 | 违反纠正次数 | 更改情况 |
缩进 | 5次 | 保持原样 |
行宽 | 0次 | 将此要求调整为单个函数不超过100行 |
括号 | 4次 | 保持原样 |
断行与分行 | 6次 | 保持原样 |
命名 | 2次 | 保持原样 |
下划线 | 1次 | 保持原样 |
大小写 | 2次 | 保持原样 |
注释 | 3次 | 保持原样 |
初始化 | 2次 | 保持原样 |
变量声明 | 2次 | 保持原样 |