最终作业的架构设计, 在迭代的过程中对自己的架构做出的调整及理由:
总体上,最终作业的文件有三类:
-
有实例的类(冒险者、药水、食物、武器)
-
无实例的方法类(负责战斗的Combatlog、负责交易的MoneyOperations)
-
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、迭代的思路展示,引导大家学习好的风格