oo 第一次博客作业
早在大一就听说了oo的各种传奇故事,大二下学期终于也开始了我的oo之旅。
基于度量来分析自己的程序结构
第一次作业
- 类图分析
- 耦合度分析
可以看出在第一次作业中,我的耦合度非常高,还停留在面向过程式的设计。
第二次作业
- 类图分析
- 耦合度分析
可以发现在第二回作业中虽然我有意识的拆分类,但组织结构仍然不好,耦合度仍然很高。
第三次作业
- 类图分析
- 耦合度分析
可以分析发现,这次的作业有了一些oo的样子,对input, output, terms有了各自的package,并且耦合度较前两次降低了一些。但设计的架构仍然不够优秀,有很大的进步空间。
自己程序的bug
在前两次作业中,我在互测中有bug。
第一次作业出现bug的原因是没有读懂指导书,在ddl截至前才明白非法空格的含义,在改动代码时过于慌忙,没有处理字符串开头和结尾的非法字符。
第二次作业产生的bug在优化中,因为是熬夜写的,没有进行充分的测试,且是面向过程式的思考结果。
如何发现别人的bug
对于找到别人的bug,我主要有两个思路。
首先是针对指导书的边界样例进行总结和测试。
其次是编写自动化测试。
其他
前三次作业我有不少进步,但总体不算满意。
下面分为收获和不足两部分来总结。
收获:
有了面向对象的基本概念,对继承和接口有了初步的认识。
开始学会先设计再写代码的思维方式,明白了设计结构对完成代码的重要性。
在阅读别人代码的过程中学习到一些java编程的技巧和方式。
不足:
时间规划上有很大不足,有过熬夜到很晚的经历。
设计仍然不够简洁和精巧,写的代码结构复杂,不够明了。
测试不足,有两次互测中被测出bug的经历。
对多态和设计模式等了解不足,应用不足。
我对自己的自学和探索能力不太满意。
之后规划内的改进:
有献血计划,所以oo作业绝对要及时完成,不在晚上十一点半后编程。
多阅读优秀的项目代码,提高姿势水平。
补充课外阅读读物,扩展设计模式知识。
对整体oo学习的感想:
对作业内容不算满意,感觉没有展现足够的oo思想。
对课堂内容不太满意,这里举两个例子。第一是某节课讲到的clone函数,老师并未提到任何关于深拷贝和浅拷贝的内容,只强调了和=直接赋值的区别,但直接使用clone()是浅拷贝,和直接=赋值有同样的改变其中之一的值,另一个随之改变的问题,这才是编程中常遇到的坑。第二是关于接口,首先我先说明这节课由于我赶一个ddl没有特别认真的听课,但课后看ppt的过程,接口部分举的例子是同一层的全部类使用接口,这让我产生了极大的困惑,这和实现继承父类的抽象函数有什么区别吗?在系群中提问后才明白了接口的真正意义所在,解决除简单的树形结构外其他组合的可能性。我认为这是ppt设计非常不好的一个典型例子,举一个特别不typical的例子,而不展现重点。
oo还是更多是一个自学的过程,讨论也很重要。
由上可见我在第三次作业中的设计仍然非常别扭,不是最佳的表达式,项和因子的形式。预计重构递归下降的过程,参考助教提供的enum写法。