作业三
1. 是否需要有代码规范
对于是否需要有代码规范,请考虑下列论点并反驳/支持:
-
这些规范都是官僚制度下产生的浪费大家的编程时间、影响人们开发效率, 浪费时间的东西。
-
我是个艺术家,手艺人,我有自己的规范和原则。
-
规范不能强求一律,应该允许很多例外。
-
我擅长制定编码规范,你们听我的就好了。
解:
1、反驳:代码的规范可以提高编程的效率和结果,如果代码不规范,在复审的过程中才会真正的浪费时间,需要花很长时间的调试,因此降低整个复审的效率,所以代码规范不会影响开发的效率,反而有助于人们的开发和复审。
2、反驳:如果每个人都有一种属于自己的代码规范标准,那在别人复审的时候,会严重的降低复审的效率。开发出的代码,需要给别人或机器复审(大多数是让别人复审),所以需要统一代码的规范和原则,这样可以大大地减轻复审人员的压力,也能更好的统一代码的规范。
3、反驳:每个人在打代码的时候都会有自己的风格,但是代码风格并不是代码规范,所以代码规范需要统一为一个固定的模式,如果有很多的例外,就不能保证所有的代码都具有规范性,那么代码规范就没有存在的意义。
4、反驳:编写代码时需要统一代码规范,而不是某一个人去制定出来的。而且在团队合作中,需要分工合 作,而不是一味的听取一个人的意见,每个人都需要发表意见,之后找到一个适合所有人的方案再去执行。
2. 代码复审
http://www.cnblogs.com/heyue/p/5278206.html
修改的代码:
1 #include<stdio.h> 2 #include <stdlib.h> 3 #include <time.h> 4 //整数 5 void add(){ 6 int num1,num2; 7 num1=rand()%100+1; 8 num2=rand()%100+1; 9 printf("%d+%d=\n",num1,num2); 10 } 11 void minus(){ 12 int num1,num2,t; 13 num1=rand()%100+1; 14 num2=rand()%100+1; 15 if(num2>num1){ 16 t=num1;num1=num2;num2=t; 17 } 18 else 19 printf("%d-%d=\n",num1,num2); 20 } 21 void multiply(){ 22 int num1,num2; 23 num1=rand()%100+1; 24 num2=rand()%100+1; 25 printf("%d*%d=\n",num1,num2); 26 } 27 void divide(){ 28 int num1,num2,n,m; 29 num1=rand()%100+1; 30 num2=rand()%100+1; 31 if(num2!=0) 32 printf("%d/%d=\n",num1,num2); 33 } 34 //真分数 35 void add1(){ 36 int num1,num2,num3,num4; 37 num1=rand()%100+1; 38 num3=rand()%100+1; 39 while(num1==0||num1>=num3){ 40 num1=rand()%100; 41 num3=rand()%100; 42 } 43 num2=rand()%100; 44 num4=rand()%100; 45 while(num2==0||num2>=num4){ 46 num2=rand()%100; 47 num4=rand()%100; 48 } 49 printf("%d/%d+%d/%d=\n",num1,num3,num2,num4); 50 } 51 void minus1(){ 52 int num1,num2,num3,num4; 53 num1=rand()%100+1; 54 num3=rand()%100+1; 55 while(num1==0||num1>=num3){ 56 num1=rand()%100; 57 num3=rand()%100; 58 } 59 num2=rand()%100; 60 num4=rand()%100; 61 while(num2==0||num2>=num4){ 62 num2=rand()%100; 63 num4=rand()%100; 64 } 65 if(num2/num4>num1/num3) 66 printf("%d/%d-%d/%d=\n",num2,num4,num1,num3); 67 else 68 printf("%d/%d-%d/%d=\n",num1,num3,num2,num4); 69 } 70 void multiply1(){ 71 int num1,num2,num3,num4; 72 num1=rand()%100+1; 73 num3=rand()%100+1; 74 while(num1==0||num1>=num3){ 75 num1=rand()%100; 76 num3=rand()%100; 77 } 78 num2=rand()%100; 79 num4=rand()%100; 80 while(num2==0||num2>=num4){ 81 num2=rand()%100; 82 num4=rand()%100; 83 } 84 printf("%d/%d*%d/%d=\n",num1,num3,num2,num4); 85 } 86 void divide1(){ 87 int num1,num2,num3,num4; 88 num1=rand()%100+1; 89 num3=rand()%100+1; 90 while(num1==0||num1>=num3){ 91 num1=rand()%100; 92 num3=rand()%100; 93 } 94 num2=rand()%100; 95 num4=rand()%100; 96 while(num2==0||num2>=num4){ 97 num2=rand()%100; 98 num4=rand()%100; 99 } 100 printf("%d/%d/%d/%d=\n",num1,num3,num2,num4); 101 } 102 103 int main() 104 { 105 int i,j,result; 106 printf("请输入要生成四则运算题目的个数:"); 107 scanf("%d",&i); 108 srand((unsigned)time(NULL)); 109 for( j = 0; j < i;j++ ) 110 { 111 result=rand()%8; 112 switch(result){ 113 case 0:add();break; 114 case 1:minus();break; 115 case 2:multiply();break; 116 case 3:divide();break; 117 case 4:add1();break; 118 case 5:minus1();break; 119 case 6:multiply1();break; 120 case 7:divide1();break; 121 } 122 } 123 }
程序运行截图:
记录复审结果总结:
在代码复审的过程中,代码规格比较规范,代码设计的挺周全,例如:一个数减另一个数不能出现负数,以及真分数和除法中不能以“0”做除数,在程序中都有考虑到。修改的部分就是将代码拆分成多个function(方法),代码模块化,不是全写在一个main方法中。以及将随机抽取的数字命名为num,这样一看就能懂。还有就是我将程序中的整数模式和真分数模式混合在了一起,这样就可以随机生成既有整数模式又有真分数模式的四则运算题。其实这次的复审拆分成多个function,有许多代码会重复编写,所以还需进一步的修改和复审。
3. PSP记录个人项目耗时情
PSP2.1 |
Personal software Process stages |
Time(%) Senior student |
Time(%) SDE |
Planning |
计划 |
10 |
6 |
·Estimate |
·估计这个任务需要多长时间 |
10 |
6 |
Development |
开发 |
82 |
88 |
·Analysis |
·需求分析 |
6 |
10 |
·Design Spec |
·生成设计文档 |
4 |
6 |
·Design Review |
·设计复审 |
4 |
6 |
·Coding Standard |
·代码规范 |
2 |
3 |
·Design |
·具体设计 |
12 |
12 |
·Coding |
·具体编码 |
26 |
21 |
·Code Review |
·代码复审 |
18 |
9 |
·Test |
·测试 |
10 |
21 |
Reporting |
报告 |
8 |
6 |
·Test Report |
·测试报告 |
3 |
2 |
·Size Measurement |
·计算工作量 |
2 |
1 |
·Postmortem&Process Improvement Plan |
·事后总结,并提出过程改进计划 |
3 |
3 |
总结:通过这张表的总结,可以看出我在“具体编码”和“代码复审”这两个方面花的时间更多。与专业的软件工程师比起来,还缺乏代码的熟练程度,以及在需求分析上面考虑的比较少。所以在今后的学习中,还需更加的努力,多实践,能更加熟练的掌握代码的编写。
4. 学习进度表
|
学习时间 |
新增代码行 |
博客量(篇) |
知识总结 |
第一周 |
6小时 |
约100 |
2 |
数据库课设,巩固了上个学期的知识,将自己不是很熟练的东西重新进行学习。 软件工程,在课下将教材大概的浏览了一下,了解了一些基础的概念。 |
第二周 |
10小时 |
约150 |
4 |
软件工程,c语言中的随机数rand()函数,以及巩固了一下switch语句。 数据库课设,建表,增删改查语句。 |
第三周 |
9小时 |
约200 |
5 |
软件工程,巩固了c语言中的一些函数和循环语句,学习了代码规范、代码复审以及用PSP表格记录自己的学习时间。 数据库课设,增删改查语句,完成报告。 |
第四周 |
|
|
|
|
...... |
|
|
|
|