结对人员:100616班10061151 祁彦博,100617班10061192 张永强
这一周完成了结对编程的项目,首先来两张图,展示一下我们结对编程的过程。
对于这个团队项目,我们首先的思路就是要先各自看一下给定的框架的源代码,弄清楚程序的一般的执行流程,这样方便后面的编程,然后就是每个人都试着去写一下这个程序,这一点主要是为了让大家都来熟悉一下,然后我们一起完成结对编程的项目。
对于结对编程这种模式,有一些好的方面,同时我觉得也有一些问题,首先来说一下优点,下面的优点摘自《移山之道》。
1、有开发层次,能够提供更好的设计质量和代码质量,两人合作有更好的解决问题的能力。
2、对开发人员来说,结对工作能够带来更多的信心,高质量的产出能够带来更高的满足感。
3、在企业管理层次上,结对能更有效地交流,相互学习和传递经验,能更好地处理人员流动。
但是同时,如果我们不能够很好的利用好结对编程这个工具的话,那么就可能面对资源的浪费,投入与产出的失衡,开发成本变大等等很多的问题。也就是说对结对编程很重要一点的就是要对结对的两个人有非常高的要求。我觉得,对于结对编程的两个人,首先上需要两个人要能够在自己本身的技术上距离不要太大,要能够比较轻松,容易地交流技术方面的问题。然后再说,就需要两个人的特点能够互补,这样才是结对编程所追求的,比如对于结对结对帮编程的两个人,一个人在写代码这方面比较厉害,写得比较快,而另一个人则比较细心,这两个人在结对的过程中就具有一定的互补性。写代码的人在写的过程中可能就会忽略一些东西,而由另外一个人则能够帮助检查,提醒需要考虑到的一些方面,这样的效率就会得到提高。
结对编程的过程中,我和祁彦博两个人的技术水平都是不怎么样的,只能够一边看,一边写,一边调,不断地改。
对于祁彦博同学,比较积极,思维比较活跃,能够比较主动地和同学沟通,但是缺点呢,也是比较明显的,编程方面的能力还不是很好。
对于面向对象编程技术,要如何利用这些好的设计方法,资料上有很多的介绍,也告诉我们如何才能够使用好,下面说一些我自己的想法吧:
面向对象方法,其中有一个思想就是一切都是对象,首先需要理解这个对象,并且能够对现实生活中的真实存在的对象,我们能够做出一个准确的抽象,这个抽象是我们建立模型的基础,在建立了一个模型以后,就需要我们用面向对象的知识,将这样的模型表示出来,关于Information Hiding,这一点,可以参考一些规则性的东西,比如我们说的对于对于类中的一些变量变量要能够隐藏,不能够直接访问,通常,对于变量,我们也设置了一些对应的属性。这些具体的规则,我们在资料上就可以找到。对于这些我们需要不断的编程去实践,去获得经验,同时也需要向别人学习,吸取别人的代码中的比较好的部分,然后不断地实践,最终应用到自己的代码中来。对于接口设计这一块,上学期做过面向对象的作业,这方面的感触 还是比较深的,对于接口设计,说得简单一点,团队合作就需要一个很好的接口设计才能够让项目按时完成,再深层次地说一下,那就是接口设计的好坏直接决定了一个程序的好坏,包括代码的复用,程序的功能的完善等等各个方面。而loose coupling这一块,就更好地保证了程序各模块之间的独立性,这一点如果设计好了,很方便程序的扩展,我觉得,这一点上,其实和接口设计这一块是联系比较紧密的。
Code Contracts, 需要能够明确别人的需求,对于这次的结对编程,我感觉对这个的应用不高,对于后面的团队项目,我想继续体会一下这样的编程方式。
在这个电梯调度程序中,对于原来的Bus程序,在每一层都要停留,就浪费了大量的时间,对于这个程序,我们的想法是,对于一个电梯,知道它的运行方向,然后找到距离这个运行方向上,最近的一个这个运行方向上的请求,在这里停留,所有的电梯执一直重复这个过程。
程序的UML图如下: