结对成员:冯志睿
结对编程的优点:首先,结对编程增强了代码的质量,能够有效的减少bug的出现;其次,方便结对编程的人员共享彼此的经验和知识,获得能力的互补;而且,
在编程过程中通过两人的讨论,可以更快更有效地解决问题。
当然,结对编程也有一些不好的地方。比如:有较丰富编程经验的人喜欢一个人独立完成编程任务,与人协作时反而会感到不适应,起到反作用;当两人水平差
距较大时,有经验的一方可能会觉得烦躁,而新手此时却会焦虑紧张,可能犯一些低级错误,导致团队合作不和谐;另外,有不同编程习惯的编程人员在共同编程的
过程中,可能会出现各执己见的情况,甚至造成两人间的矛盾。
结对成员冯志睿的优点很多,比如说:编程经验丰富,负责任,态度友好,做事很有规划,对待工作认真细致等等;至于缺点,就是编程时喜欢单兵作战。
information hiding
在我看来,信息隐藏使得一个类把复杂的、敏感的、一旦被外界捕获可能会引起不良后果的内容封装在自身内部,这个类以外的代码得不到此类信息(通过反射
等手段可能得到),以提高程序的安全性与健壮性。对于信息隐藏的利用:对于类的设计,类的所有成员变量都应声明为private,对其访问都应该通过函数实现。
在类与类之间交换信息时,要交流私有变量时,要用事先设计好的方法来访问,这样如果我们在其它类里面调用另外一个类的私有变量,那么我们必须定义一个获得
该类私有变量的方法;要在另一个类里面改变另外一个类里面的变量时,我们也要定义一个改变该类私有变量的方法。另外,在多层设计中层与层之间应该加入接口
层。
interface design
一个好的接口能够提供给后面的程序设计一个良好的框架。这对于团队项目来说是非常有用的一种设计。团队合作中,有明确的分工,每个人负责不同的模块,
这种情况下我们定义一套公用的接口用于模块间的通讯,为我们提供了一种面向接口的编程思想,同时可以在某一模块未完成时供另外的编程人员使用,大大提高
了团队编程的效率。
loose coupling
loose coupling的设计使得类与类之间的依赖性变低,类与类好像是隔开了一样,它们之间仅仅通过消息来联系。所以我们在进行代码设计时,不用担心会破
环其他地方的代码当代码有改动时,不用大规模的改动代码。
Design by Contract, Code Contract 的优缺点及作业融入
契约编程建立起使用者与编程人员之间的某些规范。比如说契约设计中会约束某一方法在调用时对传入参数的要求,以及方法对返回值的约定。契约编程对于
程序设计者来说无疑是相当方便的。上学期的面向对象中,一直被要求使用防御式编程,编程人员要时刻考虑恶意输入的情况,单是处理这一方面就要花费大量的
气力。本次程序中,由于是命令行程序,就要求用户在输入指令时的参数形式等等遵循一定的规范,还有对于给定算式结果的正误判定模块,也要求给定的算式不
允许出现其他无关的特殊字符的情况。这对于我们程序的编写来说提供了很大的便利。
unit test
单元测试这块在上学期就已经使用过了,虽然是用的eclipse,但实际上是大同小异。基本上就是调用被测试的函数,按照函数的参数规定输入符合要求的参数
并获取返回结果,与预期测试结果比较,相等则认为通过单元测试,否则便是未通过。
uml
算法实现
首先是对于算式的产生:首先根据给出的最大运算符个数,随机产生出算式的运算符,然后随机出运算符的优先级顺序,并根据运算符以及各自的优先级顺序
确定括号的有无及具体位置。最后再根据要求产生用于运算数字。而算式结果的计算以及对给定结果的正误判断则由一个统一的计算模块进行,把算式当作字符串
读入计算函数,采用堆栈的方式把中缀的表达式先转化为后缀表达式,并将后缀表达式的每一块都存在同一个栈里,开始计算,每读到一个运算符,就从栈里弹出
两个运算数,并将刚才读到的运算符出栈,计算后将结果入栈,再重复以上的步骤知道栈中只剩一个元素时既得到算式的最终结果。