BUAA2023 oopre 课程总结

1.架构设计

(1)最终架构

架构图

Main:处理输入并调用Cmd类进行处理。

Cmd:根据输入不同类型进行处理。

Adventurer:冒险者相关属性、方法。

Equipment、Food、Bottle:不同物品的实现。

Commodity:价值体接口。

不同Bottle、Equipment:继承实现。

Bag:处理背包相关的事物。

Shop:处理商店有关事物。

(2)迭代中的架构调整及考虑

在hw1-hw3中,一直在main中处理所有指令,然后发现main函数长度会超过60行~~~后来单独开了Cmd类来进行指令的处理。但是Cmd中处理指令仍有一些冗长和重复。

在战斗日志处理中,把战斗日志也放在了Cmd中,但是后来发现这样会使得Cmd类比较臃肿,最后一次作业本来想调整的,但不是很有思路,就放弃了…

最后一次作业中,在背包中存储物品时,单独开了Commodity的一个HashMap,方便清空背包时遍历,以免遍历HashMap和TreeMap的嵌套结构。

在迭代过程中使用了继承和接口,使得不需要对原有代码进行大改。

2.使用junit的心得体会

junit的测试一定要全面!我是采用造数据验证大部分函数的功能是否正常,用assert相关的函数判断结果是否符合预期。在课程中对junit测试要求很高(method覆盖率大于90%、line大于60%、Branch大于60%)。这使得在写测试时要对大部分函数都进行覆盖,或者在测试某个函数时充分调用一些其他函数。在提高branch覆盖率的同时,也是在对函数不同分支的考量。

我的函数都写得相对复杂,这样带来的好处是在使用不需要一次性调用很多函数,但是就对单个函数的正确性有了更高的要求,进行单元测试能很好地测试出程序中可能存在的错误。也可以通过对Cmd类进行数据输入来进行比较综合的测试。

3.学习oopre的心得体会

oopre中,我逐渐开始了解如何面向对象进行编程,而并非像原来C语言那样面向过程编程,不是仅仅考虑如何设计出代码,一步步解决问题,而是能够对代码进行封装,合理地构建自己的代码,使得代码能够方便迭代,方便进行大规模开发。

代码风格方面,一开始我对于checkstyle感到很痛苦,觉得没有必要把这个过程限定得这么死,Main类和方法不能超过60行,其他类不能超过500行,一行不能超过100个字符。但是后来逐渐明白,这样的代码便于维护和继续开发,具有更强的可读性,也对我们这些开发者的能力培养有了很大的帮助。

4.对oopre课程的简单建议

可以把gitlab配置和idea配置拆开做教程,合在一起容易让人不明白(也可能是我的问题)。

有几次迭代过程难度比较大,需要消耗比较多的时间。

感谢老师和助教们的辛苦付出!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值