1.照片,与小伙伴的合照
结对编程成员 13061196付帅 13061163 赵庶宏
两人结对编程的优点和缺点:
优点
1)首先,结对编程可以做到时刻的在复审,复审可以显著的提高代码的质量,而结对编程则可以将代码复审的好处发挥到极致。
小伙伴和我的优缺点
2)结对编程可以增进两个人之间的交流,可以更加有效率的相互学习,传递经验,在工作中互相指导,可以更快的一起进步。
3)相对于单人工作说,两个人的合作能够锻炼人的合作能力和交流能力,在结对编程中一点一点的学会如何与他人配合。
4)在心理上,一个人工作很容易寂寞,很容易产生厌烦的感觉,而结对编程就恰好解决了这个问题,工作的乐趣增多了,工作起来也能够更加的认真。
5)工作能够更加的持久,一个人能够持续高效率地工作的时间是有限的,只有3~4个小时。而结对编程可以使工作的侧重点不断的轮换,可以在轮换中得到稍许的休息,得到1+1大于2的效果。
缺点
1)不是所有的项目都适合结对编程,也不是所有人都喜欢结对编程,强行的结对编程可能会产生与预期相反的效果。
2)结对编程可能导致思想受限,比如说遇到一个问题之后,两个人之中有一个人首先提出了自己的想法,那么另一个人在无形之中就受到了引导,哪怕第一个人的想法是错误的、是局限的,那么第二个人也受到了影响,因为在结对编程的过程中,一旦有个人提出了解决问题的某一方法,那么另一个人就会在这个问题中少投入经历,甚至不需要投入了,因为这种模式会直接提升效率呀,这也是结对编程的初衷,但是局限性其实也是不小的。
3)结对编程会使人产生惰性的心理,代码写的同时就有其他人为你复审,一旦代码出现错误,另一个人也会为你指出,久而久之,一个人为自己改错的能力就会下降。
付帅的优点有:
很拼!很负责,在自己负责的部分中,能按时的完成;
基础比较扎实;
比较喜欢钻研,接受新知识能力比较强。
缺点是:
可能是过于劳累,有时候逻辑有点混乱。
赵庶宏的优点有:
知识涉猎广泛,能把多种知识融会贯通;
能够发现各种小细节问题;
工作学习时效率高
缺点是:
有的时候不够细心
2.设计方法
Information Hiding(信息隐藏原则)interface design(接口设计)loose coupling (松耦合)
这些设计方法是指:代码模块应该采用定义良好的接口来封装,这些模块的内部结构应该是程序员的私有财产,外部是不可见的。而且改变或者供应者或者服务的问题不能影响到用户。
我们在上学期的面向对象课程中也提到了这个设计方法。多层设计中在层之间加入接口层,所有所有类与类之间都通过接口类访问,并且类的所有数据成员都是private,所有访问都是通过get()和set()之类的访问函数来实现的。
这样的好处,首先是将数据保护起来,尽可能的只让用户只通过public提供的方法实现所需的功能,用户不能直接对数据成员进行操作。而且。接口层和接口类不仅能够使类和层之间更好的耦合,而且还便于维护,标准的接口还能够增强可读性,可移植性和松耦合性
3.契约式设计优缺点
4.Junit Test代码覆盖率截图
5.UML类图
就一个类...
6.算法的实现
1)首先说明生成算式的部分
从界面获取到7个参数信息,题目数量,操作符数量,数值范围,是否有括号,是否有负数,是否有乘除,是否有括号。
生成的过程首先是根据操作符的个数生成后缀表达式,然后后缀在变成中缀的过程中决定是否加括号,如果加括号,就等价的变成加括号的中缀表达式,如果是不加括号的话,就变成无括号的不等价的中缀表达式,生成的时候选择后缀表达式是为了便于查重。
变成中缀之后,为了计算,还要变成后缀表达式,因为与之前生成时候的后缀表达式不一定等价,所以现在就直接全变成后缀再计算一次。
是否有乘除法这一判断是在生成操作符的时候完成的,这一点比较简单。
决定题目和过程中是否有负数是在两个地方完成的,首先在数字生成的时候决定题目中是否有负数,计算过程中是否有负数,在每次遇到减操作符的时候判断,如果有负数,则这个式子就不要了。
是否有分数和整除的判断方式和负数差不多,生成的时候没有分数,而且计算的过程中没有整除就舍掉了。
2)核对算式就是在一个txt中读取中缀表达式之后,变成后缀再进行计算,计算出结果之后和另个txt中进行对比,没什么特别的地方