结对编程-结对项目总结

结对项目总结 

这次的结对编程中,我负责的主要是出题、计算结果部分,我的搭档--夏昊负责的是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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ChatGPT结对编程是一种将两个程序员合作编写代码的技术。这种技术可以提高编写代码的效率和质量,同时也可以提高两位程序员的技能水平。以下是ChatGPT结对编程的步骤: 1. 首先,找到一个合适的编程伙伴。最好是一个有一定编程经验的人,但如果你是新手,也可以与另一个新手合作。 2. 确定你们编写的代码项目。你们可以选择一个共同感兴趣的项目或者一个有挑战性的项目。确保你们都对项目有一定的理解。 3. 确定你们的角色。一个人可以担任主要代码编写者,另一个人可以担任代码审核者。这样可以确保代码的质量。 4. 确定编程环境。你们可以使用一个共同的编程环境,如Visual Studio Code或者Atom。也可以使用在线编程环境,如CodePen或JSFiddle。 5. 开始编写代码。一个人负责编写代码,另一个人负责审核代码。在编写代码的过程中,你们可以随时通过聊天工具进行交流和讨论。 6. 定期进行代码审核。定期进行代码审核可以确保代码的质量。你们可以定期的分享代码,并相互审核对方的代码。 7. 完成项目并进行总结。完成项目后,你们可以总结你们的经验和教训,并提出改进建议。这将有助于你们以后更好的编写代码。 总之,ChatGPT结对编程是一种非常有用的技术,可以提高编写代码的效率和质量。通过合作编写代码,你们可以相互学习,相互支持,以及增强你们的编程技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值