• 作业三


    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表格记录自己的学习时间。

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

    第四周

     

     

     

     

    ......

     

     

     

     

     

     

  • 相关阅读:
    如果把表单数据的校验交给了javascript那么后台还有没有必要对数据做校验呢
    JSR303注解
    C++ STL标准模板库(stack)
    C++ STL标准模板库(vector)
    C++ 类模板三(类模版中的static关键字)
    C++ 类模板二(类模版与友元函数)
    C++ 类模板一(类模板的定义)
    C语言 百炼成钢27
    C语言 百炼成钢26
    C语言 百炼成钢25
  • 原文地址:https://www.cnblogs.com/zlyx/p/5299316.html
Copyright © 2020-2023  润新知