码迷,mamicode.com
首页 > 其他好文 > 详细

结对编程

时间:2018-03-25 19:26:26      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:程序   return   安排时间   报告   分享图片   需求   做什么   www   inf   

1.改进现有代码

姓名:郭雅芳 学号:201521123013 博客地址
姓名:李香荣 学号:201521123012 博客地址
参考博客2:http://www.cnblogs.com/belong033 源代码:https://coding.net/u/Belong033/p/java-third/git

  • 重构
    • clone项目,在开发环境中运行该应用程序,修改完毕最后上传至码云,并在博客中给出链接
      码云地址

    • 检查大部分主要类之间的关系,画出类图
      技术分享图片
      技术分享图片

    • 浏览所有代码考虑代码质量和测试覆盖率
      技术分享图片

    • 确定当前设计的一个弱点,通过重构,确保在这个地方已有测试覆盖并保证重构没有改变已有的功能 ?好的测试是重构的根本。检查已有代码的测试,看测试用例是否足够覆盖原代码,如果不足,请添加测试用例
      测试用例里只有整型之间以及分数之间的测试,没有整型和分数的测试
      技术分享图片

    • 降低代码重复量,找出代码逻辑泥球
      对分数和整型的四则运算代码有很多是一样的
      技术分享图片

    • 修改代码后,检查代码覆盖,看单元测试是否需要修改?测试用例是否需要增加?
      技术分享图片

2.功能改进与扩展

增加一个运算符,程序应该有怎样的改变?不得不扔掉全部重写么,还是可以只改部分模块?基于模块化设计的思想,考虑在现有程序中做什么样的修改,才能让程序更好地实现新的需求

  • 增加括号操作符
  • 减少重复题目 ?程序一次运行生成的题目不能重复,即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目。例如,23 + 45 = 和45 + 23 = 是重复的题目,6 × 8 = 和8 × 6 = 也是重复的题目。3+(2+1)和1+2+3这两个题目是重复的,由于+是左结合的,1+2+3等价于(1+2)+3,也就是3+(1+2),也就是3+(2+1)。但是1+2+3和3+2+1是不重复的两道题,因为1+2+3等价于(1+2)+3,而3+2+1等价于(3+2)+1,它们之间不能通过有限次交换变成同一个题目。
    技术分享图片
    对于优先级的处理(伪代码)
private static String  infixToPostfix(String exp){
                  //定义优先级规则priority
                     priority.put("*", 2);
                    priority.put("/", 2);
                    priority.put("+", 1);
                    priority.put("-", 1);
                    priority.put("", -1); 

                     ...
                                     
               if (isNum(num_op)) { // 是数字则输出  
                     
                } else if (")".equals(num_op)) { // 右括号则将左括号之前的内容全弹出  
                        
                       while (!"(".equals(tmp)) {  
                           tmp = stack.pop();  
                        }  
                   } else if ("(".equals(num_op) || priority.get(num_op) >= priority.get(getTopOperator())) {  
                        
                    } else { // 优先级小于栈顶运算符,则弹出  
                                     
                          }   
             }  
                // 弹出剩余运算符
               while (stack.size() > 0) {  
                    postfix.append(stack.pop()).append(" ");  
                }    
                return suffix.toString();  
}

程序截图

技术分享图片
技术分享图片
技术分享图片

技术分享图片
技术分享图片

码云提交记录

技术分享图片
技术分享图片

结对照片

技术分享图片

小结感受:结对编程真的能够带来1+1>2的效果吗?通过这次结对编程,请谈谈你的感受和体会。

对于这次实验的感受,简直是糟心。没有体会到1+1>2的感觉,两人编程水平都不高,编程过程中思路很杂乱,导致浪费太多时间。没有合理的安排时间,以及分配好每个人的工作。

PSP2.1 个人开发流程 估计耗时 实际耗时
Planning 计划 15 20
· Estimate 明确需求和其他相关因素,估计每个阶段的时间成本 5 5
Development 开发 240 320
· Analysis 需求分析 25 50
· Design Spec 生成设计文档 15 13
· Design Review 设计复审 20 45
· Coding Standard 代码规范 10 10
· Design 具体设计 50 55
· Coding 具体编码 80 100
· Coding Reivew 代码复审 20 20
· Test 测试(自我测试、修改代码、提交修改) 15 25
Reporting 报告 20 20
· 测试报告 5 4
· 计算工作量 5 7
· 并提出过程改进计划 8 10

结对编程

标签:程序   return   安排时间   报告   分享图片   需求   做什么   www   inf   

原文地址:https://www.cnblogs.com/xygeqian/p/8642707.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!