zoukankan      html  css  js  c++  java
  • 软件工程网络15结对编程作业

    201521123057 赵意 http://www.cnblogs.com/wufuckshuo/
    201521123054 童欢 http://www.cnblogs.com/

    1.改进现有代码

    分析网络14部分现有程序代码(请选择其中一个)
    选择第2个:
    个人博客地址2:http://www.cnblogs.com/belong033 ,源代码:https://coding.net/u/Belong033/p/java-third/git

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

    检查大部分主要类之间的关系,画出类图

    浏览所有代码考虑代码质量和测试覆盖率

    确定当前设计的一个弱点,通过重构,确保在这个地方已有测试覆盖并保证重构没有改变已有的功能

    好的测试是重构的根本。检查已有代码的测试,看测试用例是否足够覆盖原代码,如果不足,请添加测试用例
    降低代码重复量,找出代码逻辑泥球
    当前程序是否支持多个操作符运算,如果不支持,请在源代码基础上进行改进,算法参考:https://www.cnblogs.com/dragondove/p/6445850.html

    修改代码后,检查代码覆盖,看单元测试是否需要修改?测试用例是否需要增加?

    参考
    重构-靠谱程序员的必备技能:https://mp.weixin.qq.com/s/23a8BY_fP168GWLrGLJzrw
    JUnit单元测试:http://www.cnblogs.com/happyzm/p/6482886.html
    Java覆盖率统计:http://www.cnblogs.com/happyzm/p/6530384.html

    2.功能改进与扩展

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

    增加括号操作符

        private List<String> par(int a, int b) {
        List<String> r = new ArrayList<String>();
        if (a == 0 && b == 0)
            return null;
        else if (b == 0) {
            r.add("");
            return r;
        } else if (a == 0) {
            String add = "";
            for (int i = 0; i < b; i++)
                add = add + ")";
            r.add(add);
            return r;
        } else {
            
            if (a > 0) {
                List<String> next = par(a - 1, b);
                if (next.size() != 0) {
                    for (int i = 0; i < next.size(); i++)
                        r.add("(" + next.get(i));
                }
            }
    
            if (b > a) {
                List<String> next = par(a, b - 1);
                if (next.size() != 0) {
                    for (int i = 0; i < next.size(); i++)
                        r.add(")" + next.get(i));
                }
            }
        }
    
        return r;
    }
    

    减少重复题目
    程序一次运行生成的题目不能重复,即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目。例如,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,它们之间不能通过有限次交换变成同一个题目

    回归测试
    在开发新功能时避免损坏旧的功能,以确保新的功能不与原有功能冲突
    在确认修改的功能正确之后再签入代码。
    运行截图:

    效能分析
    效能分析工具:http://www.oschina.net/p/jprofiler ,使用方法: http://www.cnblogs.com/bjlhx/p/6668888.html

  • 相关阅读:
    在CMD下用java命令出现“找不到或无法加载主类”问题
    去除后台ckeditor的style="...."的样式
    php图片上传
    html图片预览
    论文阅读
    论文阅读
    论文阅读
    论文阅读
    论文阅读
    论文阅读
  • 原文地址:https://www.cnblogs.com/dongnankanwang/p/8646746.html
Copyright © 2011-2022 走看看