第一部分为整体代码设计
在代码第一次作业开发的时候,本人就意识到以后开发会出现地址取空的问题,也就是Hashmap在get(key)的时候报错,但当时数据不会出现也就没有再深究。但java对数据的操作全部为地址,这就导致bag的删除操作需要额外注意不能影响到adventurer本身的拥有。
所以我的解决方案便是adventure与bag分两个Hashmap,联系仅为作为第一关键字的key相同,在新增瓶子、食物和装备也是分开put(但这也间接导致了最后一次强测未通过。原因在于,Bottle新增变量isEmpty后,在携带瓶子时,想当然给其传入false而不是getisEmpty,导致冒险者拥有的瓶子同时为空而背包内携带瓶子为满的尴尬情况)。
对于op14则比较复杂,单独设置了FightLog操作类以及Log来保存。(这里本人又犯了一个错误,就是在involverList暂存结束后未及时清空,导致进入战斗模式的冒险者只增不减,闹了笑话)。
其余则是一些细节问题与一些判断,在此不一一列举了。
在debug时,我的个人习惯是在idea里面创建新Scratch File,因为idea会在左侧显示行数,这样就方便在代码对拍时快速定位自己第几条指令出现错误,缩小目标范围,节约debug时间。
另外令我没想到的是java也有浮点数转整数时少了1这样的情况,值得注意。
第二部分为junit使用体会
这里很惭愧由于当时图省事,直接将测试点数据拿来就用,以提高代码测试覆盖率为目的,一个测试大概有个四千行左右,没有起到使用junit应有的目的。
现在回头想想当时如果写一个方法就设置相应junit数据测试,会大大减少debug的时间,以及debug时的无力与迷茫。这也是我在OO正课需要改进的地方。
第三部分为学习体会
首先这门课的代码量是比较大的,这也给初次接触迭代开发的我们带来不少的压力。
其次收获主要在工具运用以及代码调试能力提升吧
第四部分为课程建议
在后面讲到接口时可以放宽一下ddl,多给一些时间进行代码重构吧