20180925-5 代码规范

作业要求参见[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次,也多谢结对伙伴的即使纠正。对于其他的代码风格规范,这次也是好好学习了一番,希望自己通过这次的学习,在以后的学习生活中,严格按照代码规范来编写,不再随意乱写,写出漂亮的,易读性强的代码。

原文地址:https://www.cnblogs.com/orion1994/p/9751285.html