作业三: 代码规范、代码复审、PSP
1. 是否需要有代码规范
对于是否需要有代码规范,请考虑下列论点并反驳/支持:
这些规范都是官僚制度下产生的浪费大家的编程时间、影响人们开发效率, 浪费时间的东西。
不对。代码规范是为了方便程序员群体的交流与审查。毕竟一个项目大多是以团队的形式。
我是个艺术家,手艺人,我有自己的规范和原则。
不对,编码风格不是编码规范,编码规范同时包括了编码风格和其它规范,不仅仅指代码格式。例如,像“返回成功/失败的函数应该用一个整数作为返回值”,这样的规则不属于编码风格。有自己的风格可以,但不能因为自己的风格违反编码规范。
规范不能强求一律,应该允许很多例外。
不对,规范之所以叫规范,就是一个行业的行为准则,如果允许例外的话就不能称之为规范了。
我擅长制定编码规范,你们听我的就好了。
不对,规范的制定不应该由一个人自作主张,而是应该由大多数人决定,并且经得起检验才能叫规范。
2. 代码复审
我审查的是王乃宽同学,他说是我的室友。源代码如下:
#include<stdio.h> #include<stdlib.h> #include<time.h> main() { int a,b,op,os; aq1: printf("选择您想挑战的运算法则\n"); printf("1.加法 2.减法 3.乘法 4.除法\n"); scanf("%d",&op); switch(op) { aq: case 1: srand((unsigned)time(NULL)); a=rand()%100+1;b=rand()%100+1; printf("题目为:%d + %d = ?\n\n",a,b); printf("1.查看答案 2.做下一题\n"); scanf("%d",&os); if(os==1) {printf("%d + %d =%d\n\n\n",a,b,a+b); goto aq1; } else goto aq; break; at: case 2:a=rand()%100+1;b=rand()%100+1; printf("题目为:%d - %d = ?\n\n",a,b); printf("1.查看答案 2.做下一题\n"); scanf("%d",&os); if(os==1) {printf("%d - %d =%d\n\n\n",a,b,a-b); goto aq1; } else goto at; break; aq2: case 3: a=rand()%100+1;b=rand()%100+1; printf("题目为:%d * %d = ?\n\n",a,b); printf("1.查看答案 2.做下一题\n"); scanf("%d",&os); if(os==1) {printf("%d * %d =%d\n\n\n",a,b,a*b); goto aq1; } else goto aq2; aq3: case 4: a=rand()%100+1;b=rand()%100+1; printf("题目为:%d / %d = ?\n\n",a,b); printf("1.查看答案 2.做下一题\n"); scanf("%d",&os); if(os==1) {printf("%d / %d =%d\n\n\n",a,b,a/b); goto aq1; } else goto aq3; break; } }
代码工作吗?
工作
代码符合需求和规格说明么?
是的
代码设计是否考虑周全?
缺少考虑分母为零的情况。
所有的代码容易理解?
并不是,个人水平有限,并不能理解全部,但是大部分还是可以理解的
有冗余的或重复的代码么?
没有
尽可能模块化的代码么?
是的
任何全局变量可以替换吗?
是的
代码是可以测试的么?
是的
有没有无用的代码可以清除?
没有。
我审核了一下王乃宽的代码,发现比我的精细许多,能从中学习到一些思想,他的代码考虑了单一一种运算的情况,适合想强化加减乘除单一计算能力的学生。值得借鉴。