结对编程第二阶段
Posted zxtzszyz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结对编程第二阶段相关的知识,希望对你有一定的参考价值。
一、实验目标
1)体验敏捷开发中的两人合作。
2)进一步提高个人编程技巧与实践。
二 、实验内容
1)根据以下问题描述,练习结对编程(pair programming)实践;
2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。
3)要求在结对编程工作期间,两人的角色至少切换 4 次;
4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
三、实验过程
1、代码规范
1、变量名不可以是关键字,尽量做到见名知意。
2、宏定义里变量名全大写。Java包(Package)属于一种特殊情况:它们全都是小写字母,即便中间的单词亦是如此。
3、函数名采用小驼峰式命名法。
4、缩进正确
缩进是通过键盘上的 Tab 键实现的,缩进可以使程序更有层次感。原则是:如果地位相等,则不需要缩进;如果属于某一个代码的内部代码就需要缩进。
5、注释简明易懂。
(1)注释是对代码的“提示”,而不是文档。程序中的注释不可喧宾夺主,注释太多会让人眼花缭乱;
(2)如果代码本来就是清楚的,则不必加注释;
(3)边写代码边注释,修改代码的同时要修改相应的注释,以保证注释与代码的一致性,不再有用的注释要删除;
(4)当代码比较长,特别是有多重嵌套的时候,应当在段落的结束处加注释,这样便于阅读;
(5)每一条宏定义的右边必须要有注释,说明其作用。
6、下面是对类的一些建议:
(1)一个复杂的开关语句:考虑采用"多形"机制;
(2)数量众多的方法涉及到类型差别极大的操作:考虑用几个类来分别实现;
(3)许多成员变量在特征上有很大的差别:考虑使用几个类。
实验设计思路:
对于四则运算的程序,首先董纬就提出要使用if、else语句,我们考虑到在实验要求中需要支持真分数,则需要分类进行编译。对于算式的计算,我觉得需要应用到栈的方法。在如何计算出值和表达式方面,我们通过qq视频通话并一起参考博客,需要学习逆波兰式算法,得出计算结果,由于需要判断的语句较多,则需要进行多次输入新的变量
在设计整个实验的过程中,由于代码量比较大,在编译过程中有一定的困难,新输入的变量和调用的方法都相对较多,十分容易产生混淆,同时本次实验的代码的层次十分多,环节较为复杂,在编译过程中出现逻辑错误的可能性很高,需要进行多次编写和修改。在几个实验要求中,支持真分数运算是比较困难的一个部分,首先要确定输入值是否为真分数,这里就有了一个比较的过程。董纬就给出了如下代码。
在判断完之后将进行计算,并在最后需要加上返回语句,输出结果,同时由于一个真分数的分母不能为0,在编写过程中需要加上额外的判断语句
最终在我们两人的努力下,系统地将代码编写完成并运行
实验代码:
import java.util.Scanner;
public class Arithmetic {
public static void main(String[] arge)
{
int x,y,i;
int result=0;
System.out.println("请输入题目的数量");
Scanner scanner=new Scanner(System.in);
x=scanner.nextInt();
int number[]=new int [x];
System.out.println("请输入最大数值的范围");
y=scanner.nextInt();
for(i=0;i<x;i++){
int a=(int)(Math.random()*y);//随机生成一个1-y的整数
int b=(int)(Math.random()*y);//随机生成一个1-y的整数
int c=(int)(Math.random()*3);//随机生成一个1-4的整数,0表示加法,1表示减法,2表示乘法,3表示除法
if(c==0)
{
result=a+b;
System.out.print(a+"+"+b+"= ");
}
if(c==1)
{
result=a-b;
System.out.print(a+"-"+b+"= ");
}
if(c==2)
{
result=a*b;
System.out.print(a+"*"+b+"= ");
}
if(c==3)
{
result=a/b;
System.out.print(a+"/"+b+"= ");
}
if((i+1)%3==0){
System.out.println();
}
number[i]=result;
}
System.out.println("如需显示答案请输入1");
if(scanner.nextInt()==1){
for(i=0;i<x;i++){
System.out.print(number[i]+" ");
}
}
}
}
实验总结:
本次实验是学习java以来一次较为完整和系统的考察学习情况的实验过程,通过结对实验的方式来实现。本次实验有一定的难度,考察方式较为全面,需要投入较多的时间和精力,在一些实验要求上,比如在给定的一定数量(较大)的代码输出结果中,需要为客户自动筛选出是否存在重复代码,以及多重的判断语句
项目github地址:https://github.com/pxw3170701339/pp_project.git
以上是关于结对编程第二阶段的主要内容,如果未能解决你的问题,请参考以下文章