BUAA-2023秋-OOpre结课纪念

最终作业的架构设计, 在迭代的过程中对自己的架构做出的调整及理由:

总体上,最终作业的文件有三类:

  1. 有实例的类(冒险者、药水、食物、武器)

  2. 无实例的方法类(负责战斗的Combatlog、负责交易的MoneyOperations)

  3. main 的读入​​​​​​​​​​​​​​

最开始并不是特别了解架构问题,在前十几条指令的时候完全采用的是Adventure作为mian方法的方式,所有的大型的方法都存在Adventure里面,Bottle等类只含有get与put简单的方法,在迭代的过程中,随着方法的逐渐增多,爆了500行的限制,开始考虑单独将main与方法提取出来,同时考虑到mian读入时60行的限制加上当时在学习正则表达式,于是采用了正则处理读入数据,传入字符串数组,在方法内再次分析的结构,成功将单行方法的实现减低至几行,在之后的学习中,更加了解了java的特点(这里具体指深浅克隆与static静态方法与变量的问题),对方法的提取与处理有了十足把握,于是将后续方法提取到单独的方法类里面,最终构成了现在的结构。

谈谈自己使用junit的心得体会:

心得之前,我想先叨叨两句,我关于junit的使用感觉还是不太充分的,每次提交,junit的覆盖率都擦着边,感觉涉及特殊情况的数据的junit基本都没有怎么编写过,大部分实现的junit都在测试分支覆盖,方法覆盖,基本保证了大方面上代码不出问题,可以实现基本弱测的要求,以后有机会再好好研究一下(感觉这话有点呃呃)

至于心得,junit最基本的功能就是提供调试,你可以通过编写测试数据来更直观的看到你的代码的运行过程,并且有设置条件断点等一系列好用的调试方法,关于junit的数据编写,可能是个比较麻烦的过程,在自己编写新方法的测试的时候,我一般选择沿用老数据,(以OO迭代为例:沿用之前建立的冒险者与携带物品,测试新的方法,比如战斗方法,的时候在考虑特殊的情况),理由有好几个:

1.首先就是方便

2.其次就是一般通过上次强测的方法基本上已经没什么问题的,可以相信学校的强测数据吧(

3.每次都对相同的五六个冒险者和他们的装备进行操作,到后面你会对这些数据比较敏感,能更快找到是哪个操作出现问题

一些junit遗憾:

1.懒得编数据的话,为什么可以选择学校的强测数据

2.junit编的有点枯燥,可以编一点有趣的数据

本学期学习oopre的心得体会:

关于java特性,实例化一个类后,类内的变量应为private型,在类外采用get等方法来操作,而对于Hashmap<Integer,Adventure>的情况,用Adventure A取出(.get)其中的一个冒险者,取出的就是你要的原对象,可以直接操作源对象,A只是一个类似指针的标签。

对于static与final,static可以理解成公用(静态),静态的方法是所有人共同调用的,可以通过类名来调用,而非静态要通过具体实例名才能调用,final是在初始化之后便不能在被改变,但是静态容器内的对象是可以改变的。

最后是自己理论外的一些心得体会,在debug的时候目光不要太局限,最好要主动出击,先自己构思猜测可能的错误情况,如果猜测不到,也不要对着庞大的数据发呆,重点在于多思考 可以提取大数据里面有用的几行,来形成小数据,这样就十分直观了。在学习知识的时候,也要理论和实践积极结合,不要只实践,不关注理论学习。

对oopre课程的简单建议:

~~ 老师/助教不要太帅,没心思听课了(不错的彩虹屁)~~

可以加点junit、迭代的思路展示,引导大家学习好的风格

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值