OOpre作业总结
代码最终整体架构与迭代调整
代码最终整体架构
其中,Commodity
为interface
, Adventurer, Food, Bottle, Equipment
为其实现类;
Bottle
为RegularBottle, ReinforcedBottle, RecoverBottle
父类,
Equipment
为CricEquipment, EpicEquipment, RegularEquipment
父类,实现了一个父类管理多个子类。
下图展示了重要类的部分方法:
迭代调整
在最终架构中,实现代码模块分层管理,使得各个代码模块及功能较为清晰。
在数次迭代中,主要通过加入新方法与新模块,而非修改原有方法与原有模块。例如,在实现”加入战斗模式“的要求中,通过加入Fight类,实现对战斗模式下各个信息的管理;又例如,通过Input类管理程序的输入,其中包含各个指令的输入与fightlog的输入,使得程序主函数清晰明了。
使用junit的心得体会
在我看来使用Junit进行测试,的确具有很大优势,但也有一定局限性,因为——
- 首先使用Junit需要我们对题意具有100%的正确理解,否则使用它只会导致让我们漏掉本来可能发现的bug,认为那儿是完全没问题的。
- 其次使用它进行编写,真的非常烦——尤其是当你还需要保证覆盖率的情况下。
- 对于较多方法组合使用,其实使用它进行测试,效果有时候并不那么好。
- 如果程序是需要输入输出时,那么使用Junit就会显得非常麻烦。(当然也完全可以实现
但是总的来说,边写代码边进行测试还是一个值得遵循的准则,因为这样帮助我规避了很多本可能发生的bug;当然也有几次没有先写,后来发现,果然出了bug。(导致找bug的时间远长于写测试的时间……[哭]
学习oopre的心得体会
学习面向对象编程,给我印象最深刻的就是,仿佛我的开发速度与代码量像火箭一般提升了[得意]。
当然这本身就是面向对象编程的特点,其可以开发工程量较大的项目。通过类的分装使得整体思路清晰,结构明确。
在OOPre的学习中,发现对代码良好的设计还是极其重要的。前面考虑、设计不慎,后面必然会为之买单——以数倍的时间debug。
其次,我个人认为最重要的一点——仔细审题——我几乎所有的bug都是出在审题上,而且这种bug极其隐蔽,在数据量大的情况下,还没有发现任何debug的好方法。所以,不如刚开始就把题目理解透了,后面会省不少事。
对oopre课程的简单建议
- 建议前期学习梯度放缓一点,这样有足够时间熟悉面向对象的设计模式;否则容易前期由于不熟悉而导致代码质量差,导致后期难以迭代。
- 谢谢老师与助教的付出!否则这门课的学习曲线可能会更加刺激~