编程人员:龚少波 汪仁贵
关于结对编程
结对编程的优点:
1、程序员在结对编程中可以互相帮助,相互传递知识,打破只是的壁垒。因为以前在单人项目开发中,程序的每一个部分都是一个人完成的,而每个人在考虑问题时总会有一些不全面的地方或者是没有想到更好地更快捷的方法去处理问题,而结对编程就能解决这个问题。
2、结对编程可以提高工作效率,比方说当自己一个人写代码时难免会干一些其他的事情,毕竟电脑一般都连着网,有人说程序员每天工作8小时其中3小时在上网剩余5小时在上网。所以当后面有个人在监督你时,你就必须把全部时间用在编程上了,这样效率自然就高了。
3、结对编程可以有效地提高程序质量。由于每个人的惯性思维,经常会写出bug但是很难察觉到,而搭档在旁边看着时,他会很轻易地就看出你的这种错误,毕竟是四只眼睛嘛,同时他还会根据你写的代码来思考后面的程序部分,然后与自己考虑的编程方向比较,吸取优点改正缺点,提高程序的质量。
结对编程的缺点:
这里我认为找到一个适合自己的搭档很重要,就想结婚一样,和谁结婚是需要慎重选择的,结对编程已不是随便指两个人就说:今天起你们两人一起把这个xxx做了!老师的这种随机抽签的方式很不好,如果两人合不来,这样反而适得其反。
队员评价:
汪仁贵:
优点:1、能认真分析项目需求以及所需的算法设计,编程能力强 2、在遇到困难时能静下心来认真的学习,查阅资料 3、能悉心与人交流,积极主动动手实践
缺点:在个别地方卡主会一直纠结没有更好地与人交流
龚少波:
优点: 1、对工作积极上心,学习态度认真 2、能积极主动地交流自己的意见看法并提出一些意见 3、在遇到不懂的地方时能虚心请教或是查阅资料
缺点: C#基础薄弱遇到难处多是向他人请教,没有做到自己独立思考
关于Information Hiding,Interface design,Loose coupling:
信息隐藏:为了让模块不让其他不需要这些信息的其他模块访问,我们就需要做好信息隐蔽,独立模块相互之间只交流实现软件功能所必需的那些信息。抽象有助于定义构成软件的过程尸体。隐蔽定义并加强了模块内的过程细节和模块所使用的人和局部数据的访问约束。把信息隐蔽用作模块化系统的一个设计标准,在测试和随后的软件维护过程中,在需要修改时将提供最大的益处。
界面设计:书中讨论到分析和设计界面时考虑到的四种模型:工程师建立用户模型;软件工程师创建设计模型;最终用户在脑海里对界面产生映像,成为用户的心理模型或系统感觉;系统的实现者创建实现模型。我们尽量消除各种模型的差距,得到一致的界面表示。
降低耦合:书里面介绍了多种方法来展现类之间的耦合。内容耦合、公用耦合、控制耦合、印记耦合、数据耦合、例程调用耦合、类型使用耦合、包含或者导入耦合、外部耦合。在编程过程中,我们通过各种相互关联的类(构件)或接口相连接时,除非不可避免,尽量上述耦合。
关于Design by Contract
优点:
(1)获得更优秀的设计;
(2)理解更清楚,测试更到位,代码更可靠
(3)能得到更出色的文档
(4)简化调试且支持复用
不足:设计具有良好契约的程序需要一定的开销:撰写契约需要时间,开发者需要时间去学习撰写良好契约所应该掌握的思想和技术,况且,并不是每个软件都需要那么高的质量。目前的主流开发语言中,只有Eiffel、Java、C++支持契约,而且仅仅支持顺序时程序(Sequential program)的契约。
单元测试:
UML图