BUAA_OOPRE课程总结

作业最终的架构设计, 在迭代中的架构调整及考虑

在这里插入图片描述

  1. 通过Method管理所有冒险者和指令 :将Adventure的容器放在Method中,根据指令类型确定调用什么方法;
  2. AdvLog和FightLog管理日志 :在FightLog中管理全部日志,并创建查询特定日志的方法,在AdvLog中管理每一位冒险者的日志;
  3. Shop实现买卖物品方法:正确记录物品信息 ;
  4. Equipment、Bottle、Food :作为最初创建的类,伴随了整个迭代过程,实现功能不断增加,包括添加、携带、使用、删除的办法,添加isInBackpack、price等属性,拓展了多个子类等等,每一次作业的迭代大多伴随了这几个类功能的更新。

使用junit的心得体会

  1. 最开始的几次作业中方法比较简单,使用junit可以清晰地验证每一个分支的正确性,对于测试数据的构造也比较简单;随着后面程序难度不断增加,对数据构造的要求也越来越高,很多分支也需要用心设计才能覆盖,但有时在设计之初考虑不周的情况可能会出现在junit构造数据也遗漏的情况,如何在测试单元中构造更合理的数据还值得不断思考;
  2. 对测试单元的使用还有很多不足,在Method,FightLog中有很多调用Scanner的方法导致无法覆盖,这些方法只能通过朴素的输出来调试。

学习oopre的心得体会

  1. 初遇面向对象:面向对象到面向过程的转变在前两次作业中感到很大的阻力,虽然有第一次作业bug修改中对面向对象大致的认识,但自己从零开始一个面向对象的程序感到一些拉扯。
  2. 在重构中前进:在过程中大的重构主要发生在Main中,前几次作业实现功能较为简单,很多对于输入处理的完成是统一在Main类完成的,随着输入复杂和指令增多,Main类格外沉重,可读性也逐渐降低。经历了两次迭代的痛苦转折,将指令解析放入方法中,将指令执行单独在Method进行管理。还有对于容器的选择中没有慎重思考未来要实现的功能,在下一次迭代中也取得了教训。
  3. 盲目的使用者:在最初使用Java容器时发生了遍历中删除导致的并发执行错误,使用Scanner在不同方法中获取控制台输入是时没有传递Scanner,而是选择创建新的Scanner以及对空指针的操作都是我在历次迭代过程中出现的问题,这些问题在现在看来已经是很明显的错误但在遇到时因为没有对方法有最基本的了解还是造成了困扰。
  4. 工欲善其事必先利其器:在前几次作业中对gitlab使用不够熟练,错误的指令操作对本地和仓库一顿扫射,熟练掌握工具使用十分重要

对oopre课程的简单建议

  1. 第一次配置环境任务量还挺大的,指导书可以更清晰一些,对于checkstyle、junit、强测修复、gitlab使用、环境配置可以再整合简化一下~
  2. 感谢所有助教对各种问题的耐心解答OTZ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值