OO第一单元总结

分析自己的程序结构

  • 第一次作业
    类图
    first UML
    Metrics
    first metrics
    分析
    第一次作业的结构十分简单,写的方法基本复杂度也不是很高,但是由于比较简单,
    而且输出没有那么多类型,也不存在嵌套,所以性能分很容易拿,但是在处理合并同
    类项时我,我出了一点小错误,如果出现类似于x-x程序就会出现异常,
    后面bug修复的时候很快就修复了。
    Bug
    报错 Comparison method violates its general contract!,后来我找到出错的问题是我重写compareTo方法的时候return 只返回了1或-1,而没有在相等时返回零,相等时一开始我返回的是零,后来我查了一下资料,发现在java8的时候对compare contract做了一些修改,但是具体怎么改的我没找到。
  • 第二次作业
    类图
    second UML
    Metrics
    sencond metrics
    分析
    第二次作业相比较于第一次作业,增加了项的类型,于是我实现了一个接口,让所有的项都实现这个接口,方便求导时统一访问,但是我在expression和item中写的方法还是太多了,有点面向过程的感觉,这两个类写的有点复杂。
    Bug
    第一个bug:在处理多个符号时,选择截取前四个字符,但是没有判断整个表达式是否超过四个字符,所以出现了越界访问的问题,实在是不应该。后来加了一个判断就修复了
    第二个bug:在写cos的导函数时,由于其结构和sin差不多,复制粘贴之后,有一个地方的sin没有改为cos,所以cos的高次导函数一直是错的。
    第三个bug:处理非法格式时,在判断时用了\s正则表达式符号,但是忽略的\t,和空格只是空白字符的一部分,并不是全部,所有判断非法格式出错。
  • 第三次作业
    类图
    third UML
    Metrics
    third metrics
    分析
    第三次作业有一说一我写的很垃圾,因为我是在第二次作业的基础上,想进行修改,但是最后发现在第二次作业的基础上,我无法处理括号匹配的问题,后来勉强中测过了,强测没有到c房的线,由于第三次作业的要求比第二次多了很多,而我又想在第二次作业的基础上修改,所以代码耦合度很高,基本复杂度也很高,依赖关系比较严重,比如Sin的表达式因子需要依赖Expression类,而Expression本身就依赖于Sin函数,但是这个方法确实可以用,但是有点太面向过程,就好像c里面的递归函数一样。
    Bug
    Bug太多,在原有的代码架构之下,bug实在太多了,大部分与括号有关的都有问题。

分析别人代码的策略

于我本身就比较菜,所以在分析别人的代码的时候,我基本就是用特殊数据去试验他的程序,而由于本来就在c房,所以测试特殊数据有很大可能测出来bug,而且我也会将我自己出错的点拿去测试别人。我也会看一看别人的代码,特别时他的正则表达式,因为这个地方有很大可能找出bug,其他的地方看的确实不是很仔细。

对于对象创建模式和重构的看法

在第一次作业之后,我是重写了重构了第二次的代码,在第一次作业的基础上,我新增了几个类,实现了一个接口,看来是是更加面向对象了一点,而且从我个人的感觉来说,我第二次的代码写的确实可读性比第一次好了很多。但是第三次作业的时候,我一开始也想的是重构,后来觉得次次重构太没有意义了,于是打算在第二次的基础上修改,结果就是越修改,代码越乱,最后虽然过了中测,但是强测基本全挂。这让我明白了代码可扩展性的重要意义。

心得体会

看了大佬的代码之后,我发现大佬总是将功能写成接口或者抽象类,而我是直接写在对应的类里面,之后如果要重写的话,就会要修改很多东西,方法之间的耦合度太高了。其次是我自己写代码时有点太大意了,完成80%工作之后,处理最后的20%有点粗心,由许多东西,我是想到了的,可是实现的时候就忘了这个事情。
最后一个问题是我,还是不够面向对象,在写代码之前,没有一个大致的框架,不知道自己该往哪个类里面加合适的方法,基本就是写到哪里发现需要这个东西,后来就加在那个后面,这应该也是我类复杂度较高的原因之一。

posted @ 2020-03-21 20:59  lpc??  阅读(250)  评论(0编辑  收藏  举报