第一次作业
- 第一次作业自己虽然很想向着面向对象的方向上写,但写出来还是很C语言式的程序。从头到尾扫描字符串,扫到加减号便认为接下来是一项,再用正则表达式去分情况匹配出这一项。用Hashmap来存储数据,方便合并同类项。最后套一个try-catch捕获没有考虑到的可能的异常。最后写了将近三百行,而我看见的代码基本就两百行解决了。关键在预处理上没有下功夫,导致扫字符串的时候要考虑的情况很多。
(1)基于度量分析程序
(2)方法复杂度分析
2.第一次作业总结
(1)自己的bug:第一次的作业测试自己感觉还是已经做得很不错了(虽然强测爆了)。最后一天晚上还静态的看了一遍自己的代码。尽可能多地推理可能的情况,堵上了很多考虑不周的地方。WF的问题已经考虑得很好了。第一次互测我被找出了一个bug,但是就是这一个bug害得我强测被爆。所以我觉得静态的检查要和动态的输入输出检查结合起来才能让测试更充分。而且往往都是在边界问题上出现bug。
(2)别人的bug:第一次感觉大家都在找WF的bug,我也没有很认真地去看别人的代码。只是找了几个大家都试过的WF式的代码。
第二次作业
1.第二次作业大概花了半天的时间构思,还是努力地想往面向对象上写。但是到最后还是只是为了第二次而写。丝毫没有考虑到程序的可扩展性。自定义了一个PolyNode类来存储产生的数据。同样是为了方便进行合并同类项。重写了PolyNode的Hashcode方法和equals方法。然后和第一次一样分情况用正则表达式来匹配。现在想起来当时完全可以把每一项切开来处理,可以使程序要简单不少。
(1)基于度量的分析
(2)方法复杂度
2.第二次作业总结
(1)自己的bug:很可惜这次强测还是有问题。在输出化简的时候很天真地直接把 “1*”化简掉,感觉很难受。
(2)别人的bug:第二次有同学分享的自动对拍的程序。就变成了跑数据找不同了。还是没有静下心好好看别人的代码。感觉这点上做得很不好,只是为了找bug而找bug。
第三次作业
1.第三次作业从周六到周二,将近四天的时间我都在想怎样用oo的思想写出来这次的作业。说实话,这四天感觉自己每天大脑都处在高度紧张的状态下。但是最后我还是用栈来暴力解决。和面向对象差得有点远。最后感觉自己真的写不动了,最后截止时间延长了我也没有熬夜debug。直到昨天晚上才de完bug。
(1)基于度量的分析
(2)类复杂度
2.第三次作业总结
(1)无效作业1/5
(2)有时候想得太多也不是一件好事,如果当初我想了一天之后硬着头皮写下去我想怎么也不会成为无效作业。但是我白白想了四天到头来还是一个无效作业。我佛了。
个人总结
感觉只要不是太关注成绩,oo不至于过得很难受。虽然我花了那么大的时间的精力做第三次作业,成了无效作业不说,感觉自己的收获并不是太大。因为花了太大的精力在做题和成绩上,没有静下来去看优秀的代码,去在网上找资料,去总结自己这几周的得失。就连课上的PPT都没有好好的过一遍。oo还是得靠自己找方法,找途径了。
至于不少人都在讨论oo这门课的好与坏,可能是自己的能力不够,感觉好像自己没有多余的精力来考虑这些。oo,os就已经很难受了,加上两门硬核的核心通识课。每周都忙地不亦乐乎。总之希望这学期的oo自己能学有所获。也不枉这一学期的煎熬。