我是江昊,学号13061205,我的结对搭档是鲁聃,学号
一、合作编程
与鲁聃合作编程是非常愉快的一件事,我们两个彼此信任,分工明确,一起开发了“小学数学习题助手”这个软件。
这个软件主要有题目生成、检验答案、计算器三部分功能。题目生成部分可以按数量、数值上界、运算符数量、是否包括括号、分数、乘除法、负数来设定要求,存储在默认文件或用户指定文件中。检验答案可以从用户指定的算式以及答卷文件中读取并进行判卷,结果存储在成绩文件中。计算器则可以输入一个算式,计算出答案。
这次结对编程中,我主要负责窗体与前端,鲁聃主要负责后端,负责维护计算核心dll。结对编程的方式很明显地增加了每个人的专注度,使每个人得到合理适量的任务压力,并顺利地完成。结对编程的缺点可能就在于增加了沟通成本,我与鲁聃经常需要对dll接口、传参细节、异常处理与各种细节问题沟通,很庆幸我们两个给对方的反馈都很及时,没有造成工作效率的影响,但是可以预想,如果两个人对于分工结合部分不明确,又不能及时沟通,会造成效率的降低。
鲁聃的优点在于,对计算核心模块精益求精,使计算核心DLL功能强大而独立,为前端提供了简单明确的接口,以及强大的字符串读入识别处理与字符串输出功能,对于我在使用DLL中的疑问与发现的bug,可以很快地回应与更新DLL;此外,软件功能基本完成后,对软件功能进行充分地测试,检测了软件的稳定性、正确性,也发现了一些bug并更正。
我的优点在于,有较好的用户体验感觉,清楚界面前端如何设计会让用户感到舒服,交互流程如何设计会自然,那些信息需要传达给用户,比如使用说明等。我的缺点是做事比较急躁,尤其遇到用户界面这样琐碎的处理流程,经常会出些bug。
二、关于 Information Hiding, interface design, loose coupling
1. Information Hiding,信息隐藏,信息封装是结构化与面向对象设计的基础。在我们的“小学数学习题助手”软件开发中,时时都在使用 Information Hiding原则。我做前端,不需要看鲁聃的工程文件,不需要看鲁聃的代码,只需要鲁聃给我提供一个DLL还有一份接口说明。鲁聃维护计算核心,只需要将接口维护好,前端的设计、布局、用户交互等不需要考虑。我们通过一份“接口协议”结合为一个高效率的团队,这正是信息隐藏原则的意义。
2.interface design,接口设计,是一个项目可以划分为不同部分的基础。我和鲁聃之所以可以一个负责前端一个负责计算核心将这个软件完成,最重要的一点就是我们有良好的接口设计。我们约定好生成算式参数设置接口、生成算式接口、计算接口、检验答案接口,在编写代码中又加入了异常抛出约定以及极端情况约定。我们设计了良好的接口,大大方便了我们的分工协作,最大程度保证了我们工作的独立,不受搭档代码情况影响。
3.loose coupling,松耦合。松耦合的目标是最小化依赖,实现可伸缩性、灵活性和容错。我们的项目中,前端与后端都有很强的可伸缩性与灵活性与容错。比如,前端可以自由选择从用户获取信息的方式,用户交互方式而无需顾虑后端的实现,后端可以自由选择解决问题的算法,变量的使用,而无需考虑前端的实现方式。前后端只需要遵守同一套“接口协议”就可以保证正常运行。后端提供的DLL文件可以不断更新,而不影响前端开发,这也体现了松耦合的理念。
原文:http://www.cnblogs.com/haoj/p/4856489.html