• 同伴个人代码复审结果


    同伴个人代码复审结果

    一、一般性检查

    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) 作为一个函数的返回结果,在三次计算中值完全相同,因此可以用一个临时变量进行存储,避免三次调用函数,如果该段代码被反复执行,那么优化后的效率会大大提高。

    七、总结

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

  • 相关阅读:
    C# 为WebBrowser设置代理,打开网页
    C# WebBrowser 设置代理完全解决方案
    java读取文件的几种方式性能比较
    .NET 对文件和文件夹操作的介绍
    java利用反射打印出类的结构
    java输出月的日历控制台
    java 实现二分查找算法
    java实现快速排序
    解决window 12 service 不能调用excel ,报"System.Runtime.InteropServices.COMException (0x800A03EC)
    3 webpack 4 加vue 2.0生产环境搭建
  • 原文地址:https://www.cnblogs.com/ruoyuwang/p/4847570.html
Copyright © 2020-2023  润新知