zoukankan      html  css  js  c++  java
  • 同伴个人代码复审结果

    同伴个人代码复审结果

    一、一般性检查

    1、代码能够正常运行,基本可以实现预定功能,没有大的逻辑错误。

    2、代码结构非常清晰,模块化做得很好,很好地运用了面向对象的编程思想,容易阅读和理解。

    3、关于字符串的匹配可以用库函数中的正则表达式来进行,当然可能在字符串比较长的时候,正则表达式会栈溢出,或者效率很低。

    4、没有出现多余的调试代码。

    5、代码的风格比较规范,缩进、换行、变量命名都遵守一般性的约定。

    二、安全性检查

    1、对输入的数据格式不合法的情况下,有些时候不能正确地识别。

    2、当出现命令行参数不匹配的时候,抛出了异常,避免程序崩溃。

    三、文档和注释

    1、没有帮助文档,但是有简要的注释。

    2、通过与程序作者交流,可以得知每一段代码的功能。

    四、测试

    1、有代码测试模块。

    2、测试用例偏少,不能覆盖很多极端情况,代码的覆盖率不高。

    五、发现的已知bug

    1、

     public static bool operator >(Number a, Number b)
            {
                if (a < b)
                    return false;
                else
                    return true;
            }

    这一段中判断条件有误,应该改为(a < b || a == b)

    2、不能生成形如(1 + 2) * (3 + 4)= 这样的式子,该问题并非是编码的错误,而是在算法设计的层面上主动规避了这样一种情况。作者的意图是先生成一个算式的后缀表达式,然后将其转换为中缀表达式,作者用了一个变量t来记录当前的优先级,一旦优先级达到了二级优先级,作者就不再生成+和-符号,因此有些合法的情况作者不能生成。所以,可能极端的情况就是由于舍弃了某些情况,不能完整地根据参数生成足够的不重复的算式。

    3、作者为了避免被0除的情况,限制所有的数为正数,而题目要求允许生成0。

    六、可做的优化

        Number result = new Number();
        int tdown = a.down * b.down / IntNum.gcd(a.down,b.down);
        int t1 = b.down / IntNum.gcd(a.down, b.down);
        int t2 = a.down / IntNum.gcd(a.down, b.down);            

    这一段代码中 IntNum.gcd(a.down,b.down) 作为一个函数的返回结果,在三次计算中值完全相同,因此可以用一个临时变量进行存储,避免三次调用函数,如果该段代码被反复执行,那么优化后的效率会大大提高。

    七、总结

    本程序作者的代码风格和代码逻辑十分规范,编程思路也很清晰,体现出较高的编程水平,值得笔者学习。

  • 相关阅读:
    flask 使用 SQLAlchemy 的两种方式
    python package 的两种组织方式
    sqlalchemy 的 raw sql 方式使用示例
    Git高速入门——Git安装、创建版本号库以及经常使用命令
    mariadb 10.1.10安装
    Android studio中导入第三方类库
    怎样获取oracle dbid
    宇宙中为何存在“黑洞”?
    CSDN日报20170401 ——《假设你还是“程序猿”,我劝你别创业!》
    clang-format中文出错
  • 原文地址:https://www.cnblogs.com/ruoyuwang/p/4847570.html
Copyright © 2011-2022 走看看