结对编程—第二阶段

一、

组队情况:

  1、队名:结对编程初试T

  2、各队员博客地址:3170701241谢林林(https://www.cnblogs.com/xielinlin/)

             3170701242滕磊(https://www.cnblogs.com/lianse/)

  3、课题及仓库:四则运算https://github.com/rezero0523/sizeyunsuan_jiedui

二、讨论与交流

1、编程环境的选择

在进行程序分析和设计之前,因为个人能力以及喜好偏向的不同,就编程语言的选择进行了讨论,我的基础不太好,目前所学的所有编程语言编程环境中使用最熟就是C语言VC环境,我的partner则是更喜欢java。在对此次实验Java更好些,因为*java不会像c,c会大概率产生相同的随机数,甚至会下次运行可能会和上次一样,因此用c写需要初始化一个时钟种子,才能尽可能地保证随机数的不同,*java的random函数10万次运行都很难出现一次相同的随机数,所以random不会产生重复函数。最终选择了使用java来完成实验。

2、程序分析

程序中需要有的功能:随机数的生成、随机运算符的产生、对表达式进行求值(包括加法运算、减法运算,分数的运算。乘方的运算)、判断结果对错。

2、扩展方向
我们选择的扩展方向是图形界面程序,增加倒计时功能、历史记录功能。
3、分工
我的结对伙伴负责题目及答案生成、避免重复,我负责图形界面、用户输入及判定对错。

二 .代码规范

(1)函数定义

函数名定义简洁明了,能够清晰表达其功能,对应各个模块的功能函数要加上对应的注释,以便后续的修改。

(2)代码编排

缩进采用编辑器默认缩进;一行的最长代码不超过电脑一个屏幕可显示的范围;实现不同功能的代码块之间要以空格隔开。

(3)空格和空行

实现程序功能的代码里不要使用过多没有意义的空格,控制打印输出时考虑空格控制输出格式;空行用于分隔用于实现不同功能模块的代码段。

(4)注释

实现各个功能的函数需要加上对应注释;部分不易理解的变量或者算法流程加上对应注释,方便理解代码;不用滥用注释,进行无意义注释。

(5)命名规范

常量,变量,函数的命名要简短且表意清晰,对于多个单词构成的命名中间用_分隔。

三、程序结对编程过程(附图)及功能实现情况(附代码和图)

本次结对编程实验我们两人的交互如下:

第一次由滕磊同学对代码进行了整体的规划与上传

仓库地址:https://github.com/rezero0523/sizeyunsuan_jiedui

第二次由我添加了对错误更有效地处理并附带代码如下

修改之前:

产生一系列无约束的四则运算产生式.

 

开始是由于之前并未进行规范产生式,内部打印导致产生了多个不符产生式,讨论决定使用2个全局变量left和right分别保存最新生成的规范随机数,并将其生成的随机四则运算式打印出来

打印结果如下:

产生符合规范的四则运算时

代码如下:

此处仅以一个case为例

case 1:
   do{
   int left1=random.nextInt(101);
   int right1=random.nextInt(101);
   left=left1;
   right=right1;
   answer=left+right;
   }while(answer>100);
   System.out.println(left+"+"+right+"=");
   System.out.println("请回答:");
   int u_answer1=scanner.nextInt();
   if(u_answer1==answer)
    System.out.println("答案正确");
   else 
   System.out.println("答案错误");
   break;

开始时是一次性打印全部题目,然后填入答案存储并校对结果,题目要求一边打印一边答题,讨论后对于每一个产生的随机四则运算之后向用户征求答案,并进行校对,提示对错。

打印结果如下:

,分别产生对正确错误答案的校对结果

 

 前前后后一共进行了三次修改,包括对界面的优化以及代码bug的修改。

 四、实验小结:

这次实验让我更深刻的了解和认识到了结对编程对于用户的有利之处,他可以使多人同时编辑一个文档,,同时双方可以互相给对对方灵感与思路,让编程更加简单。在以往的学习中只知道一个人写代码,遇到困难时就去百度,极大的程度上降低了自己的思考能力,但在本次实验中,遇到困难可以与同伴共同的思考怎么解决问题,采取这种方式可以帮助我们养成思考的能力,同时两个人组队写代码可以加快写代码的效率,在监督对方写代码时可以更好的发现错误并理解代码的含义。其次在这次试验中学习了怎么使用Github这个实用的工具。同时结对编程相对于一个人编程,出现错误的几率更小,因为两个人的工作细致程度是一个人没法比的。通过这次实验也了解到托管的用法,对以后也受益很多,比如以后编写的代码、毕业论文等,都可以托管保存。)重新熟悉java环境下rand函数的使用,以及类及其方法与模块复用程度之间的设计考量,减少代码冗余度

 

posted @ 2020-04-03 16:32  谢林林  阅读(106)  评论(0编辑  收藏  举报