结对项目总结博客



结对编程

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

  

结对编程的优点:

  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周的磨合与共同努力,都能够互相学到对方的长处。现在更能体会道那句话了:一个人走得快,一群人走得远。

时间: 2024-10-17 09:56:41

结对项目总结博客的相关文章

软工_结对项目总结博客

关于结对编程 第一次进行真正的结对编程,而且我们组又是最奇葩的三人组合(14061183韩青长)(14061195陈彦吉),在经历了三天的合作以后,感觉收获还是蛮多的,下面是我对于结对编程的一些个人体验. 优点 在结对编程的过程中,两个人共同面对同一份代码,编码时旁边时刻有人提示监督.这样写出的代码,首先考虑的特殊情况会更多,能避免很多一个人编程时因为考虑不周而在某个不起眼的地方产生的Bug,代码质量更高,少了很多调试时间. 同时,由于两个人交替工作,一方面可以缓解疲劳,同时又因为身旁有人共同工

Beta阶段项目展示博客

Beta阶段项目展示 团队成员的简介 详细见团队简介 角色 姓名 照片 项目经理,策划 游心 策划 王子铭 策划 蔡帜 美工 赵晓宇 美工 王辰昱 开发.架构师 解小锐 开发 陈鑫 开发 李金奇 开发 杨森 团队成员个人博客地址 游心:http://www.cnblogs.com/jefhq/ 王子铭:http://www.cnblogs.com/514DNA/ 蔡帜: http://www.cnblogs.com/felixcaae/ 赵晓宇: http://www.cnblogs.com/z

团队项目测评博客

第一部分 调研,评测 评测 安卓端评测 测试人:文垚 描述最简单直观的个人第一次上手体验. 第一次上手体验,操作简单,界面简洁.课程表与超级课程表差不多,不同课程不同颜色显示,简洁明了.但是整体界面在简洁中透露出些许简陋,整体UI设计缺少灵性,只有最基本的框架没有进行优化,不够美观.特别是教务通知这一版块,显示过于简陋,教务通知显示经常出现排版混乱的问题. 使用思维导图,描述福大助手的结构体系 按照描述的bug定义,找出至少两个功能性的比较严重的bug. 用专业的语言描述bug(每个bug 不少

[Alpha阶段]项目展示博客

Alpha阶段项目展示 1.团队成员介绍 bsh 负责工作:前端开发及测试,前端负责人. bsh的个人博客 byw 负责工作:PM,各类文档.博客的撰写,总体计划及督促完成进度. byw的个人博客 lqh 负责工作:后端开发及测试. lqh的个人博客 lw 负责工作:后端开发,后端负责人. lw的个人博客 szy 负责工作:暂定后端开发及测试. szy的个人博客 wb 负责的工作:前端开发. wb的个人博客 ycd 负责的工作:页面的优化与改进 ycd的个人博客 2.工程相关信息 (1)我们的用

个人项目终极博客——四则运算题目生成程序分析

四则运算题目生成程序分析 13061184 马腾跃 一.时间分析 PSP2.1 Personal Software Process Stages Time Planning 计划   · Estimate ·估计这个任务需要多少时间 15h Development 开发 · Analysis ·需求分析(包括学习新技术) 2h · Design Spec ·生成设计文档 1h · Design Review ·设计复审(和同事审核设计文档) 0.5h · Coding Standard ·代码规

Django项目_博客系统

前端: 1.页面框架加载出就加载JavaScript 2.阻止表单提交(当然也可以通过后端用form.modelform进行表单验证) 博客园中的文章提交按钮 body中的 <input type="submit" class="btn btn-primary" value="保 存" onclick="return CancelPost();"> script中的 function CancelPost() {

软工_个人项目总结博客

项目预先规划 在个人项目开始之前,我之前的编程几乎从来没有在开始前预估过时间,所以也就是摸着石头过河,大概根据之前的经验估计了一下时间. 预估时间(单位均为小时) PSP 2.1 Personal Software Process Stages Time Planning 计划 · Estimate · 估计这个任务需要多少时间 0.1 Development 开发 · Analysis · 需求分析 (包括学习新技术) 1 · Design Spec · 生成设计文档 0.5 · Design

团队项目-个人博客-4.25

昨天做什么:做了播放和暂停,暂停没成功 今天做什么:今天的成果看图 遇到什么困难:button那个后来import一下居然好了?..不过之前错误提示都没有修正这条的!! 这个播放器还是有无法导入的问题,,还在找原因,但是四个功能键的逻辑应该是对的了

小学四则运算练习题网页版结对项目报告

一.项目结构 二.计算模块和界面模块间的调用 三.页面演示效果 四.遇到问题 五.知识点记录 六.新知识新技能 七.未实现但计划实现功能 八.学习目标与总结 项目地址:https://git.dev.tencent.com/hey_wuqw/webArithmetic.git 一.项目结构 二. 计算模块和界面模块间的调用 三.页面演示效果 四.遇到问题 1.check()方法(用于接收答题页面传来的参数,请求从answer.jsp(答题界面)转发到result.jsp(做题结果界面))需要访问