架构设计
整体框架
更为具体的框架
Main 为 scanner 输入处,Game 为整体入口直接管理 Adventurer 和 Fightlog,再通过接口和继承、商店的单例模式实现其他如上图呈现的关系。
在迭代过程中的架构调整
整体没有重构过代码,较为大的调整分别集中在第四次作业中对于战斗模式的修改,加入了 Fightlog 类并且实现其和 Adventurer 类的交互。以及第六次作业中引入的接口和继承概念,分别对 Bottle 和 Equipment 使其拥有继承,并且 Commodity 接口实现了对 Bottle,Food,Adventurer,Equipment 的统一管理。
Junit 使用心得
在习惯了 C 中直接在代码本身中进行修改调试的测试来说,junit 的测试更加全面,覆盖率更高,虽然可能在实现上不是特别方便,但是能够直观的对整体代码进行一个全面的覆盖和检查。并且 junit 将一个个函数和类分开单独测试,很方便地能够找出代码中存在的显著的 bug。
但是 junit 的测试数据还是要由自己构造,一定程度上仍然依赖于构造者构造的数据强度。
OOpre学习心得
- OO 的面向对象编程的方式与 C 不同,更看重对每一个类、对象的封装,使其具有自己独特的属性,使得代码整体模块化。
- 在迭代过程中虽然作业的要求越来越复杂、多样,但是只要明白了面向对象编程的要点,整体代码虽然码量很大但是并不过于耦合在一起,反而能够较为直观地显现出各个类之间的关系,使人一目了然,功能性强。
- 在学习 OOpre 的过程同时,了解了 java 语法和 git 基本用法,尤其是对 git 的掌握能够让我方便地通过仓库对自己代码历史版本进行管理,在以后学习计算机相关知识的过程中有极大的帮助。
课程建议
- 对 java 语法较为详细的介绍。
- 对 git 可以专门开课介绍。