oopre课程于昨天结课,在此写一下总结教训
整体架构
架构图
架构解释
- 我总共开的类较少,实现的方法较为集成。
- 首先是Main负责读取输入并且对其进行简单的拆分处理,然后调用Adventure类里的各个方法。
- Adventure是冒险者类,也起到一个中枢的作用,负责与Bottle、Equipment、Food、Store,FightHistory进行互动,以实现各个功能。
- Bottle和Equipment各有两个子类,以实现其在使用时的特殊设定。
- Commodity是一个接口,Adventure,Bootle,Equipment,Food都是价值体,实现各自getPrice的功能。
架构调整与反思
- 我的架构从第一次作业开始没有明显的调整,只是对于每个类的方法进行了一些更换以达到作业的要求
- Main中的输入处理很容易就会产生代码风格的问题(即行数过多),所以我在第二次迭代的时候在Main类中创设了一个新的静态方法已实现输入的分类。
- 后出现战斗日志后,我选择直接在Main里处理,增设了四个静态方法进行战斗日志的处理
- 后在学习了继承和接口后,添加了相应的类和方法
- 最后一次迭代要加商店系统和援助,我对商店实现利用了单例模式,援助系统的实现利用了观察者模式。加了一个Store的类和相应的方法。援助系统我直接写在了Adventure中。
Junit
我在Junit测试方面做得不是很到位,因为我为了达到测试的覆盖率要求只是写了很多重复的test的方法以达到各种覆盖率的要求,但是其实这是违背了test的初衷的,我在后来发现这样做会导致有些中测测不出来的bug在强测里出现。故在以后的课程中,应改变做法,将大体量的数据导入并且考虑一些特殊情况的处理,以达到测试的目的。
oopre心得体会
- 首先也是老师一直在强调的点,就是思维的转化。从面向过程到面向对象的思维转化。这个我在一开始便特别有注意到,不会像C语言里面在Main里面集成大量的方法,也没有为了一个函数或者方法增加一个类。会很注意方法所放的类的重要性。这个在后面迭代中其实帮我省去了很多的功夫。
- 其次就是开始编程前的构思。如果一拿到需求就迅速着手,有的时候会写着写着很后悔之前的做法,比如方法放错类,或者是多增了个无用的类。所以在进行编程前,还是要对于需求和已有结构进行分析再动手,效率也会高很多。
- 还有就是debug方面,可以多用断点调试(这一点是帮了我不少),当然最好的就是好好写Junit,能检查出来很多错误而且效率也高。
一些建议
- 课程的内容相较于其一学分来说还是有些多了,可以把学分稍微增加一点。
- 有几次的任务量有点多,可以延长课时进行学习。