2023 BUAA OOpre课程总结

OOpre课程总结

大纲

  1. 作业最终的架构设计, 在迭代中的架构调整及考虑
  2. 使用junit的心得体会
  3. 学习oopre的心得体会(包括但不限于从面向过程编程过渡到面向对象编程的体会)
  4. 对oopre课程的简单建议(不多于两条)

作业最终的架构设计, 在迭代中的架构调整及考虑

首先是一个整体设计图

main
adventurer
bottle
equipment
food
fight
switch
store
commodity
regularbottle
reinforcedbottle
recoverbottle
regularequipment
critequipment
epicequipment

这里我设置了额外的 Fight 类用于存储战斗日志,战斗日期,被攻击者,攻击者等信息以及内置了一些战斗相关函数;除此之外我设置了 Switch 类用于处理输入(正则表达式和选择方法)。而我的 Commodity 接口则是为各类价值体提供了价值体相关方法,便于在 Adventurer 类中嵌套调用。
同时在历次迭代中,由于未处理好各个方法应该在什么类里导致 Adventurer 类和 Switch 类爆出过两次超出500行的Checkstyle错误,引起了较大规模的代码迁移。因此,各个方法应该各得其所而不是一股脑地填充在同一个类里。

使用junit的心得体会

  • 尽量少的使用assert避免不必要的覆盖率损失
  • 尽量充分考虑到各个分支的覆盖情况,编造足够强的数据点以达到较高的分支覆盖率
  • 如果仅仅只是要完成“覆盖率”的课上要求不必需使用完全正确且符合题目规范的数据(但这是不可取的)
  • 实际上可以使用scanner导入我们的中测测试点并加以加强用于junit测试
  • 在测试时最好按照上面的设计图自上而下进行测试,否则可能导致不必要的错误测试

学习oopre的心得体会(包括但不限于从面向过程编程过渡到面向对象编程的体会)

面向对象程序设计相对于面向过程程序设计有以下优点:

  1. 符合人们习惯的思维方法,便于分解大型的复杂多变的问题。由于对象对应于现实世界中的实体,因而可以很自然地按照现实世界中处理实体的方法来处理对象,软件开发者可以很方便地与问题提出者进行沟通和交流。
  2. 易于软件的维护和功能的增减。对象的封装性及对象之间的松散组合,都给软件的修改和维护带来了方便。
  3. 可重用性好。重复使用一个类(类是对象的定义,对象是类的实例化),可以比较方便地构造出软件系统,加上继承的方式,极大地提高了软件开发的效率。
    除此之外,课程设计中每次弱测 -> 中测 -> 强测 -> debug的过程决定了程序编写者必需在每次修改前先规划好整体的架构,以确保足够的可拓展性,防止大规模的更改(会导致额外的成本花费和可能的不必要错误);Checkstyle工具也逐渐更改了我的代码风格,提高了代码的可读性。

对oopre课程的简单建议(不多于两条)

  1. 是否能详细介绍一下assert拓展方法的使用以及junit测试具体写法
  2. 是否能将每次错误测试点的全部错误信息(如果行数一致)打入错误信息文件中而不是只给出第一个
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值