结对编程
结队成员 194 王伟东 168 李世杰
1.开篇语:
第二次的软工作业之结对编程算是告一段落了,在迷茫、恐惧与彷徨中落下帷幕,我们从此可以安枕一段时间。第一次正式得尝试结对编程这样的方式来写程序,以前写程序遇到bug时也请过同学帮助修改,但那是代码大体上完成以后的事了。
2.结对编程优缺点之我见
结对编程的好处就是时时刻刻都有两双睛(或许还有0、1、2双眼镜)同时盯着显示器,两个人都能深刻的了解代码每一个方法、变量的作用,还知道每一种方法的实现等等的程序之中每一个细枝末节,这样做带来的显而易见的好处就是可以避免非常低级的bug。学c语言的时候,我想了想我们从开始写代码到实现要求的功能所化的时间可以分为两部分:写代码和调试,通常我写代码的是时间只占总时间的三分之一甚至还少,大多数时间都花在调试上了,而造成写出的程序需要不断调试的最主要的一个原因就是有一些非常费城低级的错误出现在代码中,我是深受其害。两个人同时盯着写代码可以避免99.99%的这类错误,减少了大量的调试时间。结对编程还能让人时刻保持信心与活力,一个人写代码多无聊呀,两个人就不一样了,碰到问题两个人同时解决,商量着办,说不定还有新方法,每一个人的压力也减小了。结对编程好处还有很多,但也不是没有缺点,结对编程对两个人的契合度要求很高,如果一方是不善于交流或者在表达方式上运用不当容易造成组员之间的间隙,这就会严重影响工程进度,甚至还不如一个人干,结对编程还有一个缺点就是两个人的时间不好协调,如果两个人的时间总是没有交集,那就非常悲剧了。结对编程对两个人的水平也有要求,两个人水平差距太大,会导致水平高的人不愿与菜鸟共事,结果就是高手一力承担了所有的任务,结对编程也就空有其表了,而且不利于freshmen的成长,会使他有压力感和自卑感。
3.人人
我和王伟东
表情僵硬且有红眼,就这样吧。
至于优缺点嘛,那就按要求列一下吧,
王伟东 优点:技术上很牛,是大神;很努力勤奋,像南孚电池,聚能环耐力持久;对问题理解深,思想活跃,有思想
缺点:喜欢用i、j、t之类的变量
李世杰 优点:技术上很菜,但耐心听大神的见解;眼神好使,可以解决一些低端错误;有一颗想成为大神的心
缺点:太菜
4.契约式设计之??
契约式设计有优点,但优点是什么呢?是什么呢?我还是先说缺点吧,本身对这方面不是很了解,就从我们这次作业的实际经历出发来说吧。契约式设计给我们留好了接口,我们只需要实现接口里面的方法就行。但,但这是理论上的,要想实现接口中的方法我们要先了解接口中的每个属性是哪里的,有哪些作用,这就像是递归过程,每个属性所属的类我们又要去了解。程序小了还好,程序打了我们怎么看的过来?我们能记住类和类之间的关系吗?了解框架得花好长时间,这都抵消了它带来的好处。我觉得我们这次作业主要是这个框架不好,限定太死,接口中与其他部分相关联的太多。
优点也有,我们继承的接口中有方法错了不会影响其他的东西,纠错是我们只需要在我们写程序的框架中调试就行,保证了正确性与安全性了,其他的我就真没看到了。
至于程序代码合约就没有体会了。
5.UML
6.算法
我们的算法很简单,也很贴近生活,其实就是生活之中电梯运行的方法。如果电梯此时没有请求也没有任务,那么它会待在它停止的那一层去等待请求。当有请求到来它会响应请求走到有请求的层,电梯下次的运行方向就由上电梯的人决定。电梯此时运行,运行在途中时如果中间的层有请求,判断请求是否与电梯方向一致,若一致就响应,不一致就不响应;如果响应后,把这个人的请求加在所有电梯任务的数组中,排序,一直运行到序列中没有任务,电梯停止运行,原地待命。
这个算法还可以优化:比如通过几次任务电梯判断是上班高峰期还是下班高峰期,如果是上班高峰期那么电梯总是先响应0层的请求,下班高峰期总是响应20层请求。是否可以把几部电梯分开调度,让它们有不同的算法,几部电梯可以相互弥补算法的不足。