作业要求参见[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2147]
结对伙伴:孙赛佳[https://www.cnblogs.com/sunsaijia/]
要求1 《代码规范》包括10项条款。制定条款的目的是在程序设计的过程中(触犯和)约束代码风格,希望切实可行,容易观察和客观检验。
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++; }
要求2 记录完成本周作业过程中,《代码风格规范》执行情况。包括记录每一条规则的违反和纠正、次数,规范中某项条款的增强、消弱、或废除。在编码过程中完全未被违反的条款,说明过于宽松,或你们已经完全"本能"反应,不应作为条款,在本要求及要求1中不得分。此种情况,应补充一条新的条款。 (20分)
代码要求 | 违反纠正次数 | 更改情况 |
缩进 | 5次 | 保持原样 |
行宽 | 0次 | 将此要求调整为单个函数不超过100行 |
括号 | 4次 | 保持原样 |
断行与分行 | 6次 | 保持原样 |
命名 | 2次 | 保持原样 |
下划线 | 1次 | 保持原样 |
大小写 | 2次 | 保持原样 |
注释 | 3次 | 保持原样 |
初始化 | 2次 | 保持原样 |
变量声明 | 2次 | 保持原样 |
第一次结对编程,并且还需要严格遵守《代码风格规范》,自己以前都是按自己的风格来写的,觉得能运行就好。像我比较喜欢tab缩进,虽然这次写代码时想着要4个空格缩进,但还是违反了5次,也多谢结对伙伴的即使纠正。对于其他的代码风格规范,这次也是好好学习了一番,希望自己通过这次的学习,在以后的学习生活中,严格按照代码规范来编写,不再随意乱写,写出漂亮的,易读性强的代码。