结对编程

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
posted @ 2018-03-25 17:55  _Another  阅读(537)  评论(2编辑  收藏  举报