zoukankan      html  css  js  c++  java
  • 结对编程总结

                                                  
    队员:刘强(11061188) 林谋武(11061169)

     

    结对编程:

    结对编程的优点:

    1、  两个人合作,相比于一个人自己奋斗而言,更能激发自己的潜能;我们在合作过程中,互相学习,互相磨合,各自发挥自己的长处,并及时提醒对方工作上的失误,能让我们的工作进行得更加顺利;

    2、  两人在合作过程中彼此交流,能更快速地发现设计中出现的漏洞,及时改正错误,提高工作效率;

    3、  两人合作相较于多人团队合作而言,更能促进彼此的交流,因为两人合作过程中,有什么问题可以直接提出,并在两人商讨之后得到满意的结论,若参与者数量太多,反而不好调配;

    4、  虽然我们两个人的水平有一定差距,但是我们彼此信任,共同努力,最终还是实现了一个比较理想的算法,这是我们共同的劳动结果;

    结对编程的缺点:

    1、  两人的工作进度相互牵制很严重,若一人拉后腿,则工作总进度受到很大影响;

    2、  产生分歧之后要尽快解决,否则容易影响默契,阻碍工作进行;

    对中人员评价:

    1、  刘强:

    优点:1、编程能力强、算法设计能力强;2、动手能力强,能快速完成自己的任务;

          3、性格开朗积极,比较会缓和气氛;

    缺点:有时侯容易较真

    2、  林谋武:

    优点:1、学习态度比较好,不懂就问;2、做事认真负责,对自己份内任务比较重视;

          3、性格温和,不易动怒;

    缺点:有时候比较爱偷懒;

     

     

    关于Information Hiding,Interface design,Loose coupling:

    1、  信息隐藏指在设计和确定模块时,使得一个模块内包含的特定信息(过程或数据),对于不需要这些信息的其他模块来说,是不可访问的。我们在实现算法时,参考了原有代码,并翻阅了相应资料有,最终确定对于不同类的不同信息隐藏操作;这是对于我们使用面向对象语言的一次很好的锻炼;

    2、  接口是用来表示某一特定的功能模块,在工程中,如果遇到某些功能就可以把它封装起来,并在类中实现它。我们之前上过面向对象的课程,对接口设计有个大致的感性认识,经过这次程序实现,我们进一步提高了我们对接口和封装的理解,熟练了操作;

    3、  松散耦合是指模块之间要尽量保持独立,模块之间尽量少的牵连,以免修改一个模块后导致其他模块的异常。这样便于程序的修改和管理。虽然这次的作业并没有让我们直接参与到模块的独立设计中,但是我们也确实感受到模块独立的好处,在以后的学习过程中,我们会进一步学习使用这种方式的;

    关于“契约式设计”:

    契约式设计或者Design by Contract (DbC)是一种设计计算机软件的方法。这种方法要求软件设计者为软件组件定义正式的,精确的并且可验证的接口,这样,为传统的抽象数据类型又增加了先验条件、后验条件和不变式。这种方法的名字里用到的“契约”或者说“契约”是一种比喻,因为它和商业契约的情况有点类似。其优点:1、让人更好地理解O-O方法和软件构造;2、为除错、测试、和更一般的质量保证提供了一个有效的框架;3、它是一种给软件部件建立文档的方法;

    单元测试:

    1、  最直接的原因是保证我们函数的正确性,如果这个函数在没有保证正确的情况下就被上层代码调用,那么随着项目的深入,调用层次会越来越深,就很容易产生严重的BUG问题,从而增加开发难度,降低开发效率!

    2、  根本原因是减轻我们开发人员的工作量,使我们的工作变的轻松(这只是一个相对说法)!

    3、  Unit Test测试截图如下:

     

    UML图:

    核心算法:根据rush hour test要求,需要我们合理分配上下班高峰时的电梯调度

    1)首先迭代判断四个电梯状态:

    a)         Direction.Up:调用PickUp(elev)函数

    b)         Direction.Down:调用PickDown(elev)函数

    c)         Direction.No:调用NewReq(elev)函数

    2)关键函数:NewReq(elev)

    A) 首先判断0/1层请求是否达到累计请求书的70%,若达到,则将当前状态为Direction.No的电梯调度之0层,并清空请求次数数据

    B) 一当前层为参照,按照(楼上的上行,楼上的下行,楼下的下行,楼下的上行)顺序依次进行电梯调度。例如:楼上的上行:

    (1) 若有n个楼上层处于状态,则寻找n个楼层中的最大值,将其加入电梯目标层列表(ArrayList)。

    (2) 对于当前层与最高层之间的其他上行楼层,通过调用函数PickUp() 函数实现停靠

    3)对于PickUp(elev)/PickDown(elev)函数,实现对顺路楼梯层的稍带,详见代码注释

  • 相关阅读:
    Linux 基础篇(二)
    Linux 基础篇
    pandas 的使用
    git 使用和一些错误
    NetBackup :Unable to retrieve version of the server xxx.xxx.xxx
    Splunk 基本使用
    Symantec(赛门铁克)非受管检测
    matplotlib 的几种柱状图
    python 清空list的几种方法
    ACE
  • 原文地址:https://www.cnblogs.com/linmouwu/p/3358279.html
Copyright © 2011-2022 走看看