结对编程
结对成员:王长(2011040101179)CODING:https://coding.net/u/smile-wang 高庆阳(2013040101173) 博客:http://www.cnblogs.com/gaoqingyang1994/ CODING:https://coding.net/u/gaoqingyang1994
-
结对编程的优缺点
在结对编程模式下,一对程序员可以平等的、互补地进行开发工作;他们一起分析,一起设计,一起写测试用例,一起编码,一起做测试。。。这样在工作中可以很好实现互补,发挥每个成员的优点,工作更高效:从开发层次来讲,结对编程能提供更好的设计质量和代码质量,两个人合作解决问题的能力更强,能够很好的实现互补;对开发人员来讲,结对工作能够带来跟多的信心,高质量的产出能够带来更高的满足感,能够更加高效的解决问题;从企业方面来讲,结对编程更加的高效,能够更好的发挥每个人的长处,带来更高的利益。从我们学者编程的时候一直是一个人的活动:分析设计,编写代码,代码测试等等;这些就是我们每个人都有了自己的代码风格。此次结对项目,就是为了我们进行下一个团队项目或者走进社会做铺垫,毕竟在企业中进行的软件开发都是大型的软件,不可能交给一个人去完成。
但是由于我们基本都是一个人在编程,所以在结对编程中因为代码风格不同,需要一定的时间来熟悉彼此的代码风格。同时结对编程要求两个人必须齐头并进,不然很容易出现分工不均的情况,造成一方工作量略大,容易给一方心理上带来压力;还有结对编程要求两个人都需要有积极的责任意识,否则很可能因互相拖延导致效率的降低。最后如果分工不明确或者其他原因可能导致在某方面过于依赖对方,没有得到全面的锻炼。
所以在结对编程的过程中,既要有搞的积极性还要求队员之间相互理解,相互信任,相互帮助,这样才能共同进步,一起锻炼!
-
给队友的评价
对于这次结对编程,很高兴能和高庆阳同学分为一组,因为在我的印象中他一直都是以为值得信任的、为人热忱的伙伴;在这次的结对项目中,我们相互学习,共同完成此次项目;虽然自认为我心比较细,但是在大局的掌握上存有不足,还有就是对项目的步骤分析上存在问题,这些问题在和高庆阳同学的相互讨论中得到了解决。他对这些问题分析很透彻,让我获益匪浅。具体分析如下:
-
电梯调度
现有一新建办公大厦,共有21层,共有四部电梯,所有电梯基本参数如下表所示:
电梯编号 | 可服务楼层 | 最大乘客数量(人) | 最大载重量(kg) |
1 | 全部楼层 | 10 | 800 |
2 | 单层 | 10 | 800 |
3 | 双层 | 20 | 1600 |
4 | 全部楼层 | 20 | 2000 |
其使用规定如下:
1、楼层号为0~20,其中0号为地下一层;
2、有楼层限制的电梯不在响应楼层停靠,如单双层;
3、所有电梯采用统一按钮控制
请根据上述要求设计并实现一个电梯控制程序,如果有图形显示就更好了。
-
需求与算法分析
-
电梯的初始状态定义
(1)建筑共有21层,一共有四部电梯,其中两部是可以服务全部楼层的,另外两部为单双层电梯,编号为1、2、3、4;(2)0号为地下一层,也就是说,我们的出入一般都在0和1号(地下和大堂)。设计程序时,如果乘客选择0号,那么当乘客下电梯之后,电梯将自动回到1号位置,方便下一波乘客乘坐;(3)0电梯内部共有23个按钮(单双层电梯只有13个按钮),其中包括开门、关门按钮以及到达各个具体楼层的按钮;电梯外部每个楼层有两个按钮向上和向下按钮。按电梯的底层有就是0层只设有向上按钮,顶层及20层只有向下按钮。(4) 电梯有编号,有楼层限制,并有超重报警;(5)电梯的开关门完成时间以及到达每层上下人的时间设定。
-
具体流程
(1)乘客在某一楼层按下向上或者向下请求按钮;(2)当乘客在某一楼层按下向上货向下按钮,四部电梯同时收到命令后,由具体算法做出响应后通过控制相应电梯的运行对乘客的请求做出反应;只有当电梯的反应符合乘客的相关请求时才打开电梯门;(3)当满足条件后,电梯为乘客开门,乘客进入电梯后,需要判断电梯内部是否满员,若超载则弹出警示,乘客退出,继续等待。(5)电梯的运行结果即为输出结果,在到达该楼层后电梯门开启。
电梯在很多时候都会收到两个或两个以上的请求,进入电梯的乘客也不止一个,为了减少多个请求的等待时间,系统需要对多个请求进行优先级的判断。按照优先级,将每名乘客送到指定楼层;在多名乘客使用电梯时即系统在接到多个请求 后或者系统接收到一个请求又收到别的请求,系统将当前的首目的楼层与新的请求相比较,根据减少请求间的等待时间为原则判断哪个请求优先,即将优先的请求更新为电梯新的目的楼层,如果中途再有新的情况,则做一样的处理。
在此次结对项目中由我编写具体代码,高庆阳同学负责相关的算法,虽然我们做了很详尽的分析,因为能力有限,很多功能都没有实现,前段时间也学了HTML和CSS,刚开始尝试过写一个好点的界面,有些语言也是刚开始学习,到时最后出现一些问题,尝试了好久还是没有找到好的解决方法,最后只能放弃了,感到很遗憾。。。。此次编程中,我和高庆阳同学的代码编写习惯相差不大,我在编写的过程中代码注释比较注意,高庆阳同学对代码的复审以及功能的完善比较看重,总得来说我们的代码编写规范性一般,因为编写的都是小型的程序,所以对算法效益不怎么看重,界面倒是想弄的美观一点,只是能力不足。在以后的编程中我们会不断完善我们规范性编写以及代码的算法效力等等。
-
编程过程的体会和总结
通过两周的时间,虽然最后粗制滥造的完成了此次结对作业,但是收获还是沉甸甸的,这次编程带给我一种不一样的体会,让我感受到了合作的重要性,在编程中有很多时候我们的意见并不是同意加上每个人的代码风格以及规范性都是不一样的,好在我和队友都是比较好说话的,通过简单的交流就很好的解决了问题,这让我想到,以后我们在工作中该如何才能和他人较好的合作呢?毕竟工作中会遇到各种各样的人,彼此的脾气不一定合得来,如何才能与人较好的合作,好需要我们好好的想一想。