OOpre课程总结
大纲
- 作业最终的架构设计, 在迭代中的架构调整及考虑
- 使用junit的心得体会
- 学习oopre的心得体会(包括但不限于从面向过程编程过渡到面向对象编程的体会)
- 对oopre课程的简单建议(不多于两条)
作业最终的架构设计, 在迭代中的架构调整及考虑
首先是一个整体设计图
这里我设置了额外的 Fight 类用于存储战斗日志,战斗日期,被攻击者,攻击者等信息以及内置了一些战斗相关函数;除此之外我设置了 Switch 类用于处理输入(正则表达式和选择方法)。而我的 Commodity 接口则是为各类价值体提供了价值体相关方法,便于在 Adventurer 类中嵌套调用。
同时在历次迭代中,由于未处理好各个方法应该在什么类里导致 Adventurer 类和 Switch 类爆出过两次超出500行的Checkstyle错误,引起了较大规模的代码迁移。因此,各个方法应该各得其所而不是一股脑地填充在同一个类里。
使用junit的心得体会
- 尽量少的使用assert避免不必要的覆盖率损失
- 尽量充分考虑到各个分支的覆盖情况,编造足够强的数据点以达到较高的分支覆盖率
- 如果仅仅只是要完成“覆盖率”的课上要求不必需使用完全正确且符合题目规范的数据(但这是不可取的)
- 实际上可以使用scanner导入我们的中测测试点并加以加强用于junit测试
- 在测试时最好按照上面的设计图自上而下进行测试,否则可能导致不必要的错误测试
学习oopre的心得体会(包括但不限于从面向过程编程过渡到面向对象编程的体会)
面向对象程序设计相对于面向过程程序设计有以下优点:
- 符合人们习惯的思维方法,便于分解大型的复杂多变的问题。由于对象对应于现实世界中的实体,因而可以很自然地按照现实世界中处理实体的方法来处理对象,软件开发者可以很方便地与问题提出者进行沟通和交流。
- 易于软件的维护和功能的增减。对象的封装性及对象之间的松散组合,都给软件的修改和维护带来了方便。
- 可重用性好。重复使用一个类(类是对象的定义,对象是类的实例化),可以比较方便地构造出软件系统,加上继承的方式,极大地提高了软件开发的效率。
除此之外,课程设计中每次弱测 -> 中测 -> 强测 -> debug的过程决定了程序编写者必需在每次修改前先规划好整体的架构,以确保足够的可拓展性,防止大规模的更改(会导致额外的成本花费和可能的不必要错误);Checkstyle工具也逐渐更改了我的代码风格,提高了代码的可读性。
对oopre课程的简单建议(不多于两条)
- 是否能详细介绍一下assert拓展方法的使用以及junit测试具体写法
- 是否能将每次错误测试点的全部错误信息(如果行数一致)打入错误信息文件中而不是只给出第一个