zoukankan      html  css  js  c++  java
  • 结对编程-结对项目总结

    结对项目总结 

    这次的结对编程中,我负责的主要是出题、计算结果部分,我的搭档--夏昊负责的是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<<num;            //然后生成数字 
        if(tt<=pJunior)          //以一定概率生成平方 
            fout<<"^2";    
    }

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

     /**
         * 初中难度产生带有平方/开方符号的数字
         * @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

  • 相关阅读:
    Jenkins系列——使用SonarQube进行代码质量检查
    HTTP1.0工作原理
    Jenkins系列——使用checkstyle进行代码规范检查
    Jenkins系列——定时构建
    Hadoop环境搭建
    eclipse3.4+对的处理插件(附SVN插件安装实例)
    MD5
    RedHat6.5更新软件源
    ubuntu软件推荐
    disconf系列【2】——解决zk部署情况为空的问题
  • 原文地址:https://www.cnblogs.com/wujingxuan/p/9747669.html
Copyright © 2011-2022 走看看