2023秋面向对象先导课程总结

作业架构设计和迭代

作业最终的架构设计如下
UML类图
在迭代中,唯一的重构是在我觉得 MainClass 类过于臃肿的时候新增了 Commands 类,通过反射机制去除臃肿的 if ... else ... 语句。
部分架构的调整如下:

  1. 在第三次作业的时候添加了背包类。
  2. 在第四次作业的时候添加了 Logs 类(存储日志和格式化生成日志)和 Time 类(格式化日期)。
  3. 在第六次作业的时候添加了 Commodity 接口和新增的类的继承关系。同时重构了命令的条件处理。出于格式化的需求,将所有的 Adventurer 类的实例和索引放在新增的 MainData 类内管理。
  4. 在第七次作业的时候新增 Store 类,通过不定长参数实现对不同种类价值体的统一方法处理。

一些遗憾:

  1. 重构的时候有点懒,把处理战斗的功能放在 Logs 类里面了,好在后面没有相关的迭代开发。
  2. 根据这个架构,应该把 Store 类放在 MainData 类内统一管理。
  3. Adventurer 类和 Bag 类的交互有种 TLS 握手的美感。
  4. 到最后也没搞懂所谓的各种模式的意义,没有太关注架构。

使用 junit 的心得体会

junit 是对代码的部分就行单元测试的工具,帮助我们发现潜在的错误,因此在测试的时候一定要全面。
但是有时候 bug 并不是单个出现的,有些时候是某些代码纠缠在一起,每个部分都没有明显的问题,但是数据传递着就出问题了,这就要求测试的强度也要够大,不单单是全面就行了。
junit 也不是万能的,有时会出现调用的方法出错了(上了代码提示的当),部分单元测试都能通过,这种摸不着头脑的情况。这就要求对自己的代码要有足够的了解和全面的掌握,能够敏锐地察觉可能的错误并尽早地规避(或者标记)。毕竟修 bug 就像打补丁,往往会影响代码的美观。但这种能力不是 junit 能锻炼的。因此,我认为我们还是要打好基本功,不要等 junit 测试出 bug 了再去修复。

学习 oopre 的心得体会

首先在学习的过程中,我出于开发的需求了解了一些 java 的高级语句。
其次,我认为面向对象虽然与面向过程有着比较大的差异(比如“实例”和“方法”的概念),但归根到底我们的程序还是按照一定的顺序处理数据的。也就是说,面向对象的处理依然与过程密不可分。面向对象只是实现的手段,不意味着我们可以忽视过程,相反的,这意味着我们的过程要更精确,明确到每个对象或类的身上,这一点其实相比于面向过程对我们掌握过程的能力提出了更高的要求。

对 oopre 课程的简单建议

  1. 不一定要依靠新增指令来实践新的知识,也可以尝试通过修改需求来帮助同学们理解,通过有限的指令完成更复杂的功能。
  2. 可以加入不计分的互测环节让有兴趣同学了解更多正课的内容,同时还可以通过这个环节帮助他人 debug(比如在 hack 的同时写上可能的错误)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值