结对编程人员:张梦达(11061166) 聂健(11061199)
一、结对编程实感(聂健):
对于从没有结对编程经验的人,结对编程可能只能通过想象来感受。这次通过实际练习,让我们体会到了相较于个人完全独立开发,结对编程的特点:
1、原本以为一个人独立思考独立实现可以保证自己开发的独立性,而结对编程就无法达到这样的统一,然而在实践中,我们发现通过讨论和提醒,我们能更明确自己的目的,减少差错,其实只要把各自的想法表述清楚,把自己观察到的问题直接指出,让对方明白自己的整体和细节思路,这样即使出现分歧,也能在短时间内解决,整个开发的进度和效率也会随之提高。
2、像我这样开发能力较弱的人会不会拖团队的后腿?在整个开发工程中,我体会到的是,只要敢于把自己的想法说出来大家讨论,比一个人编程时付出更大的热情更多的耐性,就不会拖后腿。大家敞开心扉,在交流之中就可以提高水平。
3、两个人开发能够更好地激发出双方的激情和想象力,培养双方积极主动参与合作的意识,促进双方的交流,也许不经意间就想到一个一个的解决方法或者优化方法,并且有时候互相激励,使费时枯燥的敲代码工作变得有些趣味了,这样都能使项目做的更好。
4、有的时候自己的思维惯性导致某些Bug或者冗余代码自己反复检查都检查不出来,但队友检查一遍便可发现,这一点对于没耐性反复检查调试的开发人员来说很是受用。
梦达的优点是思维活跃(优),心胸开阔想法也多(优),并且会督促开发,很积极(优),但是coding能力(单纯C#能力)较弱(缺)。
聂健的优点是比较耐心(优),总想寻找新的好的方法(优),但是不够细心(缺),阅读代码、coding速度较慢(缺)。
二、
接口设计:清晰度是首要工作,设计接口时尽量细化功能,从而使得功能更专一。借口是为促进交互而存在的。
信息隐蔽:类的成员变量的可见性统一成private,并设计相应的属性。从而用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽。
使用:只是在scheduler.cs中很少的class中进行了使用,因为相当多的已经明确给出。
三、UML例图(VS2012下)
四、调度算法说明:
*首先统计上楼下楼请求个数,存放在PasFromID和PasToID(From1和To1的单独记录)
*当电梯停在第X楼层时,先把整个请求队列中已完成的请求删除,在判断请求队列是否为空,为空,则停止,不为空,先把初始目的楼层设为第一请求楼层
* 当高峰时期,电梯先去往一楼,即下楼,按远近捡要下行的乘客
* 否则电梯上楼,按远近捡要上行的乘客,之后,按照远近捡下行的乘客,之后捡要上行的乘客
* 不是高峰时间,楼下要下楼、楼上要上楼,按照请求远近(近)送客,楼下的要上楼、楼上的要下楼,同样按照远近(远)送客
* 同时设计了一个顺道捡人的算法(借鉴同学的),如果电梯正在下行,中途有人也要下而且楼层比电梯目的楼层还高,那就捡他
* 如果电梯正在上行,中途有人也要上而且楼层比电梯目的楼层还低,那也捡他
五、自己在这次作业中负责的部分
算法的讨论、代码的初步编写、UML类图的构建。
附:UnitTest截图: