OOpre心得总结
代码架构

主要代码架构可以分为以下三层:
- 管理者层(AdventurerManager):设计AdventurerManager类作为第三方管理,其中包含添加删去物品,fight,购买,雇佣等操作,避免在Adventurer类中堆积过多的方法,便于对adventurer进行管理。AdventurerManager中主要是各个指令对应的方法。
- 冒险者层(Adventurer):在Adventurer中包含对adventurer属性更改的方法,例如改变魔力值,改变生命值;检查是否是上级,检查是否是盟友。便于在指令操作时直接调用。
- 物品层(Item):主要设计物品的属性管理以及方法(例如使用等)。Usable与Equipment设计为接口,便于管理方法。Spell,Bottle,Weapon设计为抽象方法,不需要实例化,但是在背包管理时需要使用。
具体架构可参考上图。
使用JUnit的心得体会
- 注意Junit的覆盖率,包括但不限于类覆盖率,方法覆盖率,分支覆盖率等。确保在使用时能够保持较高的覆盖率,尤其时分支覆盖率这种涉及到代码细节的测试,尤其需要审慎考虑。
- 利用JUnit中自带的工具灵活构建测试方法,例如
@Before, assert等,以及system.out测试打印输出等(虽然在评测机中不支持重定向,但这不影响在调试代码时使用)。灵活利用这些工具可以大大提高debug的效率。 - 尝试构建刁钻的测试点,尤其是卡在一些边界情况的样例,这可能比较困难,但这非常利于找出bug,往往能有较大的启发。
学习OOPre的心得体会
- 从面向过程到面向对象:之前编写的代码基本都是脚本类型的代码,通过OOpre的学习则对工程化代码有了初步的架构思路,类的构建,方法的设计,以及合理的代码架构都至关重要,这与之前只追求结果的编程思维有较大的差别。
- 大量代码下的编程与debug;在代码量巨大的情况下,良好的代码结构与编程规范有助于编程与debug,能够避免反复重构。
对于OOpre课程的建议
可以在开始迭代之前先描述一个整体的世界观架构,例如在第几次迭代我们要实现一个怎样的功能。在对整体世界观有了一个掌握后,可以一定程度上减少重构的工作量。