博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
结对编程-结对项目总结
阅读量:5208 次
发布时间:2019-06-14

本文共 2559 字,大约阅读时间需要 8 分钟。

结对项目总结 

这次的结对编程中,我负责的主要是出题、计算结果部分,我的搭档--夏昊负责的是UI,前端的部分。其中出题部分是上一次用C++写过一次的,而这次主要是把原来的代码换成JAVA语言来写,下面是在编写程序的时候遇到的主要困难和总结:

前端部分:

由于我做的是后端的部分,对于前端的知识没有深入了解,只是大致看了下大佬的代码,大佬真的是做了很多工作:

文件、类、方法等命名写的很规范,界面内容写的也很细致,每个界面呈现什么内容,如何跳转,思路清晰;这方面的知识以后还是要多多学习下。

截图:

自己尝试写了一小部分播放音乐的功能,感觉还挺有意思的(可能因为这部分代码比较简单)

后端部分:

一、在用Java重新写程序时:

1.JAVA语言的使用不熟练,编写程序的时候会因为一些不起眼的小错误而耽搁很长时间:

比如,一个很简单的东西:JAVA语言中布尔类型是boolean,在写程序的时候,顺手写成了bool,还一直奇怪怎么会报错,这么简单的问题一时没有转过弯来=_=!

2.完善了部分代码

(1)之前的生成算式的部分,对数字没有细分,比如,tan90不存在的情况,在这一次的项目中对这里进行了改进;

(2)由于JAVA的封装性,本来在C++中定义的全局变量,在JAVA中会破坏封装性,对一部分代码进行了改进,把全局变量作为方法参数,在需要改变的时候可以通过改变参数以达到相应的目的。

比如,在生成初中数字的部分:

原来的代码是这样的:

int pJunior=2;    //改变生成开方或者平方的概率 (全局变量)/*功能: 初中难度产生数字参数:fout:文件对象 */void juniorNum(ofstream &fout)    {    int tt=rand()%9;    int num;        do{        num=rand()%MAX_NUM;    }while(num==0);        if(tt>7)     //以一定概率生成根号         fout<<"√";    fout<

改了之后的代码是这样的:

/**     * 初中难度产生带有平方/开方符号的数字     * @param pJunior 改变生成平方/开方的概率,以保证算式中至少有一个平方或者开方的符号     * @return 字符串类型的数字     */    public static String juniorNum(int pJunior) {        Random ran=new Random();        int t=ran.nextInt(9);        int num=ran.nextInt(100)+1;        String q="";        if(t>6) {            q+="√";        }        q+=String.valueOf(num);        if(t<=pJunior) {            q+="^2";        }                return q;    }

 

二、在写计算算式的结果部分:

1.eval()函数

很偶然的在网上查到了,eval()函数可以计算字符串,包括带括号的,也就是说eval()函数可以计算小学难度的算式,然后初中和高中的算式可以先把开方和平方以及三角函数处理了,然后再调用小学的计算方法,思路很简单,极大的精简了代码,节约了很多时间;

但是,这里有一个特殊之处:初中以及高中的算式在生成时,平方、开方以及三角函数都是紧跟着数字出现的,不会出现sin(45+45)、(2+12)^2类似的式子,为计算部分提供了很大的便利,使得上述计算方法可以顺利执行。

但是这种方法也有缺点

就是可移植性不高普遍适用性不强,这种方法在这里可以使用,但是在别的程序中遇上(2+12)^2这样的式子,就会出问题;而且eval()函数是javaScript里面的方法,感觉在这里使用有点投机取巧。。感觉没有很好地训练到自己的编程能力,以后把入栈出栈的方法补上。

下面是使用eval()函数的部分代码:

/**     * 计算小学难度的试题     * @param str     * @return 小学难度的字符串答案     */    public static String primaryCal(String str) {        ScriptEngine se = new ScriptEngineManager().getEngineByName("JavaScript");        String result="";        try {            double d =Double.parseDouble(se.eval(str).toString());//转化为double类型            result=String.format("%.2f", d);//保留2位小数        } catch (ScriptException e) {            e.printStackTrace();        }        return result;    }

ps:前面要加上包:

import javax.script.*;

2.对计算部分进行了封装

把原来的计算不同难度算式的函数封装到了一个函数中,调用更加方便。

对接部分:

通过这次结对项目,真的切身体会到沟通真的很重要!沟通真的很重要!沟通真的很重要!(重要的事情说三遍),刚开始在我们各自大概完成各自的部分后,尝试着拼起来,刚开始还好,但是在最后两天,因为沟通不到位,出现了乌龙,最后还是多亏了夏昊大佬解决了问题(给大佬递可乐)。

 

总的来说还是觉得,在这个项目里我的搭档--夏昊做的部分比较多,对接的时候能跟他学到很多,也能感受到他的学习能力很强,向大佬学习。orz

转载于:https://www.cnblogs.com/wujingxuan/p/9747669.html

你可能感兴趣的文章
错了:用流量能够放肆,有wifi则要节制
查看>>
CSS渐变字体、镂空字体、input框提示信息颜色、给图片加上内阴影、3/4圆
查看>>
https://zhidao.baidu.com/question/362784520674844572.html
查看>>
第八周
查看>>
my.cnf_For5.7_注释版
查看>>
【MFC 学习笔记】CFile读写文件
查看>>
Java 的IO操作初步(一)
查看>>
关于VGA时序的相应计算方式
查看>>
电感和感抗
查看>>
PAT B1018.锤子剪刀布(20)
查看>>
Yii2.0 集成使用富头像上传编辑器
查看>>
Extjs控件之 grid打印功能
查看>>
检测多个Jar包冲突的class
查看>>
枚举类型(不常用)递归
查看>>
iOS开发基础篇-transform属性
查看>>
ETL
查看>>
Tomcat源码分析(六)--日志记录器和国际化
查看>>
今天把csdn的博客搬家到博客园
查看>>
D3.js+Es6+webpack构建人物关系图(力导向图),动态更新数据,点击增加节点,拖拽增加连线......
查看>>
基于网络的 Red Hat 无人值守安装
查看>>