• 结对项目总结博客



    结对编程

      这次结对项目由我和陈谋共同完成。下面是一张我们在一起讨论时委托他人帮忙拍摄的图片:

      

    结对编程的优点:

      1.相互之间能够进行代码复审,在代码复审中的提问与回应能帮助两人之间互相了解,更好的发现自己程序的瑕疵。

      2.在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作解决问题的能力更强。

      3.对开发人员自身来说,结对工作能带来更多的信心,高质量的产出能带来更高的满足感。

      4.结对能更有效地交流,相互学习和传递经验,分享知识。

    结对编程的缺点:

      1.对于有不同习惯的编程人员,在一起工作会产生麻烦,甚至矛盾。

      2.有时候,程序员们会对一个问题各执己见,争吵不休,反而产生重大内耗。

      3.面对新手,有经验的老手可能会觉得非常的烦躁。不合适的沟通会导到团队的不和谐。

    我的优缺点:

      优点:

      1.对工作积极热情,总是希望能够快一切完成。

      2.态度严谨,保证必须的要求都能完成。

      3.乐观开朗,遇到难以解决的问题或者程序的BUG时,少有焦躁的情绪。

      缺点:

      1.编程水平相较于伙伴偏低,复审了伙伴的代码后发现的确质量比自己高。

    同伴的优缺点:

      优点:

      1.编程能力很高,经常参加各种比赛。

      2.工作态度很积极,经常找我讨论各种关于项目的细节。

      3.性格友善平和,向他提问自己不懂的问题时,他总能耐心的解答,丝毫没有不能耐烦的情绪。

      缺点:

      1.时间的把握不是特别严格。


    设计方法:

    1.Information Hiding

      信息隐藏是结构化设计与面向对象设计的基础。在结构化中函数的概念和面向对象的封装思想都来源于信息隐藏。

      在本次项目中,我们就在多个地方运用到了这一设计方法:

      1.类的所有数据成员都是private,对于类成员的访问需要通过访问函数,不能直接访问和修改成员变量。

      2.Core与外部输入输出层之间通过接口函数才能访问。

    2.interface design

      接口的设计可以有效地提高团队工作的效率和保证工作的同步性。

      在这次项目中我们双方的工作正是因为运用了接口而得以同步进行。一个人完善Core模块的功能,另一个人设计用户界面,然后两部分最后通过接口进行连接。

    3.loose coupling

      这一点在上学期的面向对象课中吴际老师就不断跟我们强调,类与类之间应该尽量减少耦合程度,各司其职。一个好的松耦合方法就是类与类之间的接口设计。由于这次项目的规模不大,类较少,所以没有使用到类的接口设计。但是在编码过程中尽量使类之间的耦合程度降到最低。


    契约式设计

      这一设计方法在上学期的面向对象课上同样有提到,契约式设计要求程序员为程序定义可验证的接口,在数据抽象之上又增加了前置条件、后置条件和不变式。

      契约式设计的优点:类的不变式能够保证类一直处于正常状态,一旦类的不变式表示为false,像程序员报错,避免了不可控的问题。函数调用的前置条件和后置条件也能够保证方法的正常运行,一旦出现问题,能够准确定位到出错的地方。运用契约式设计,编程人员可以避免很多异常,并且在出错时能够定位到位置,节省了后期的调试时间,保证了代码的质量。

      契约式设计的缺点:设计具有良好契约的程序需要相当的开销。撰写契约需要时间,开发者需要时间学习撰写良好契约的思想和技术。

      在这次结对项目中我们没有使用契约式设计,有两点原因:

      1.这次结对代码是以个人项目的代码完善而来的,再使用契约式设计需要重新编写代码,增加了时间花销。

      2.这次结对项目的规模较小,用契约式编程有可能反而在契约的编写这块花费太多精力。


    单元测试

      我们对Core类进行测试,设计了共22个测试点,代码覆盖率为89.35%:

      


    UML图

      


    算法的关键

      1.这次项目采用的是陈谋的算法。他的算法不同于我们大多数人是先中缀转后缀再求值,而是直接求得中缀表达式的值。

      2.然后比较关键的一点就是生成表达式的方法:

      <表达式> = <项> | <表达式> + <项> | <表达式> - <项>

      <项> = <因子> | <项> * <因子> | <项> / <因子>

      <因子> = (<表达式>) | i

      通过这种文法表达式,能够采用很简便的方式实现,而且运算速度也比较快。


    结对编程的感受

      很幸运能够分到和陈谋一组,在做项目的过程中能够从他身上学到很多东西。结对编程虽然在一开始双方有可能交流有些不顺,但是经过了2周的磨合与共同努力,都能够互相学到对方的长处。现在更能体会道那句话了:一个人走得快,一群人走得远。

  • 相关阅读:
    Centos7 系统别名设置
    C#编程 JSON操作
    C#编程 XML文档
    C#编程 socket编程之TcpClient,TcpListener,UdpClient
    C#编程 socket编程之udp服务器端和客户端
    C#编程 socket编程之unity聊天室
    C#编程 socket编程之tcp服务器端和客户端
    C#编程 线程,任务和同步(2) 开启线程
    C#编程 线程,任务和同步(1) 基础认识
    C#编程 LINQ查询
  • 原文地址:https://www.cnblogs.com/FUduomi/p/4858059.html
Copyright © 2020-2023  润新知