作业三

1. 是否需要有代码规范

      对于是否需要有代码规范,请考虑下列论点并反驳/支持:

  1. 这些规范都是官僚制度下产生的浪费大家的编程时间、影响人们开发效率, 浪费时间的东西。
  2. 我是个艺术家,手艺人,我有自己的规范和原则。
  3. 规范不能强求一律,应该允许很多例外。
  4. 我擅长制定编码规范,你们听我的就好了。

解:

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=
",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=
",num1,num2);
 20 }
 21 void multiply(){
 22     int num1,num2;
 23     num1=rand()%100+1;
 24     num2=rand()%100+1;
 25     printf("%d*%d=
",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=
",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=
",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=
",num2,num4,num1,num3);
 67     else
 68         printf("%d/%d-%d/%d=
",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=
",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=
",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表格记录自己的学习时间。

数据库课设,增删改查语句,完成报告。

第四周

 

 

 

 

......

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/zlyx/p/5299316.html