结对编程
武鑫 165 和 刘彦熙 194 一起完成了本次的作业,尤其是十一期间,非常感谢他的辛苦付出
结对编程的优点:
1.与他人共同完成工作,在这个过程中,可以发现平时自己难以发现的问题。
2.充分结合两个人的优点,明确分工,提高效率,达到1+1>2的效果。
3.在工作的过程中两个人都关注着程序的进展,相比一个人单独工作,更降低了产生不必要的小漏洞的可能性。
4.彼此学习对方的优点长处,促进了彼此的进步。
5.交流的过程锻炼了彼此的沟通能力,有助于之后的团队合作。
结对编程的缺点:
1.如果代码风格不同,需要一定的时间来熟悉彼此的代码风格。
2.要求两个人必须齐头并进,不然很容易出现分工不均的情况,造成一方工作量略大。
3.要求两个人都需要有积极的责任意识,否则很可能因互相拖延导致效率的降低。
4.分工可能导致在某方面过于依赖对方,没有得到全面的锻炼。
我的优缺点:
优点:...
缺点:拖延症晚期..
效率不高...
懒0.0
同伴的优缺点:
优点:思路清晰
动手能力强
对于新的语言上手非常快
代码质量很好
风格非常棒
对于我这个拖延症和懒癌患者给予了极大的帮助。
缺点:优点太多0.0
设计方法:
1.Information Hiding
信息隐藏是结构化设计与面向对象设计的基础。在结构化中函数的概念和面向对象的封装思想都来源于信息隐藏。
“In computer science, information hiding is the principle of segregation of the design decisions in a computer program that are most likely to change, thus protecting other parts of the program from extensive modification if the design decision is changed. The protection involves providing a stable interface which protects the remainder of the program from the implementation (the details that are most likely to change).
Written another way, information hiding is the ability to prevent certain aspects of a class or software component from being accessible to its clients, using either programming language features (like private variables) or an explicit exporting policy.”——摘自wiki
在这些地方运用到了这一设计方法:
1.在各个类中,数据成员的属性都是private
2.禁止直接访问和修改成员变量,只有通过访问函数才能访问类的成员变量。
2.外部层之间必须通过接口函数才能访问CORE,这也有助于不同组之间的对接。
2.interface design
用户界面设计是屏幕产品的重要组成部分。界面设计是一个复杂的有不同学科参与的工程,认知心理学、设计学、语言学等在此都扮演着重要的角色。
“User interface design (UI) or user interface engineering is the design of user interfaces for machines and software, such as computers, home appliances, mobile devices, and other electronic devices, with the focus on maximizing the user experience. The goal of user interface design is to make the user's interaction as simple and efficient as possible, in terms of accomplishing user goals (user-centered design).”——摘自wiki
通过设计接口,保证了团队工作目标的明确性以及最终工作的顺利完成。
在分别进行CORE和用户界面这两部分工作时,只需考虑当前部分的情况以及相应的接口,而无需考虑另一部分的具体实现。最后在将两部分的工作合二为一完成任务。
3.loose coupling
“In computing and systems design a loosely coupled system is one in which each of its components has, or makes use of, little or no knowledge of the definitions of other separate components. Sub-areas include the coupling of classes, interfaces, data, and services.”——摘自wiki
类与类之间实现松耦合,使得各个类的功能更加的清晰明确,更贴近面向对象思想。松耦合的特征则是中立的接口定义,减少耦合程度,各司其职。当整个工程的内部局部结构发生变化的时候,松耦合系统的灵活性使得其相应的模块不受其影响或者影响降到最低,有利于程序的维护和完善。
契约式设计
在具有了前置条件、后置条件和不变式,以及为程序添加可验证的接口后,就符合了契约式设计的要求。
契约式设计的优点:
1.前置条件控制了相应的输入,对于符合要求的输入进行正常的处理,并返回满足后置条件的输出。对于不满足条件的输入能够正常的进行处理或者报错。
2.由于类的不变式的存在,可保证类一直处于正常状态,对于使得不变式为False的情况,能够及时识别并报错。
3.契约式的设计,降低了程序在编写时因为考虑不周而出错的可能,可以避免很多异常,而且条理更加清晰明了,方便查错和更改。
契约式设计的缺点:
设计契约会花费不少的时间。
单元测试
我们对Core类进行测试,设计了共21个测试点,代码覆盖率为83.00%:
UML图
算法的关键
在随机生成四则运算式并计算方面,使用了之前刘彦熙在个人编程中的思想。而判卷功能以及根据输入的算式计算结果的功能,则使用了部分我在个人编程中的思想。
之所以说是使用了思想,是因为我们在第一次作业中都是用C++写的作业,而这次则改用了C#
结对编程的感受
结对编程让我收获了很多。无论是从代码风格还是自学方面,刘彦熙同学都给我做了很好的榜样,让我重新审视自我提升自我。结对编程虽然开始阶段需要两个人磨合,但是对于提升彼此是十分具有帮助的。三人行必有我师,两人行,同样如此。