270
社区成员
发帖
与我相关
我的任务
分享
核心游戏接口和类
| 类/接口 | 功能 |
|---|---|
| Adventurer | 代表游戏中的冒险者,包含属性如ID、名称、体力、攻击力、防御力等 |
| ItemManger | 基类,代表所有物品,包括药水瓶Bottle和装备Equipment,包含属性有ID、是否被携带 |
| Bottle | 药水瓶基类,具体子类包括HpBottle(生命药水瓶类)、AtkBottle(攻击药水瓶类)、DefBottle(防御药水瓶类)、ManaBottle(魔法药水瓶类) |
| Equipment | 装备类,有CE属性 |
| Armour | 护甲类 |
| Weapon | 武器类,具体子类包括Magicbook(魔法书类),Sword(刀剑类) |
| Spell | 法术类,具体子类包括HealSpell(治疗法术类),AttackSpell(攻击法术类) |
| lexer |
读取嵌套输入,用于词法解析的类 |
| InputManage | 输入管理类,用于解析用户输入并调用相应的命令处理类 |
| Factory | 工厂类,用于创建不同类型的物品(工厂模式) |
| MainClass |
游戏入口类,读取用户输入并启动主循环 |
| EmployeeManger | 接口,具体实现的类有Adventurer类,用于处理雇佣关系 |
|
Obersvable |
接口,具体实现的类有Adventurer类,用于通知下级自身的状态(观察者模式) |
| Package | 背包类,用来管理携带的物品 |
| RelationChecker | 具体实现的类有Adventurer类,用来判断冒险者间的关系 |
| UseMethod | 接口,具体实现的类有四个药水瓶类以及两个法术类,用来使用药水或法术 |
JUnit显而易见是为了更方便的测试一个类自己有没有问题,并且最好覆盖更多的分支,但是随着代码迭代次数增多,分支数量也是不断暴涨,由于偷懒故仅覆盖了部分分支,全当是完成任务了(悲),虽然很清楚JUnit的精髓确实是断言assert判断真假,但是最后JUnit成为了我用来过评测率的一个负担了,连debug都是靠文件输出的对拍来找的。最后一节课上老师说大厂们特别看重“自动化”这个东西,也就是你必须得实现自动化的评测,那么对于人工对比结果来说明显是不符合要求的,那么你就需要assert语句来判断是否正确,并且覆盖面要广,而不单单仅是满足课程覆盖率的要求。(注:本人最后一次作业juit中branch覆盖率仅有60.5%,刚好卡着课程60%的要求过的)
其实真的是没有时间去写JUnit吗,并非,只是看到那么多情况和类偷懒了,只选取主要的分支进行了测试,这也导致其中一次强测未考虑全面仅得了80分。
最后,还有一个问题,可能是因为最开始未做好规划,导致不少地方出现了对同一个分支,同一个方法进行重复测试的情况,导致测试代码写了很多行,但是覆盖率就是上不去,虽然后面意识到了这个问题,但也不想重构进行修改。
综上,JUnit确实一个很好用的东西,但是也是要用心花时间的,并且应该有规划的去测试,才能提高效率。
在OOPre上我第一次接触了面向对象的编程方式,由于大一只学过C语言(绝对的面向过程的语言),没有一点java编程的经验,导致刚开始学还是比较吃力的,但是学到后面就发现其实面向对象的编程很简单,核心就在与封装这一点,并且这种编码方式的可读性很好,就算是几千行的代码感觉也读得进去(C语言几百行的我都看不过来)。同时在课上我还学会了各种设计模式,多态和继承等优化代码的小技巧,感觉还是学有所获的。
本人拙见。谨供课程组参考一下:
1.把每次报错时测评机的输出调整为标准输出,不明白为什么要提供我们自己的输出,这个我们不是可以自己导入输出从而得到的吗
2.从java基础开始讲起,照顾一下没有java编程经验的人