2023秋OOPre课程总结

1.代码架构

 

  • 类Mainattach相当于main中功能的执行者,main模块可以通过调用mainattach中的方法运行程序,这样方便我对mainattach中的方法进行测试。
  • Adventurers类集中管理冒险者,此类在Mainattach中有一个实例
  • Colosseum(竞技场)类用于集中处理有关战斗的全部事务,此类在Mainattach中有一个实例
  • Shop类用于集中处理有关买卖的全部事务,此类在Mainattach中有一个实例
  • Food,Bottle,Equipment三个类属于并列关系,Pack类,Adventurer类中均有相应的容器去储存这三个类的实例,而Pack是从属于Adventurer类的,每个Adventurer类中都有一个Pack的实例
  • Logforoneday(单日日志)类用于储存与管理某个时间的日志内容,从属于Colosseum,Colosseum中有用于存储Logforoneday实例的容器
  • 接口Commodity是用于应对“价值体”任务需求的接口,方便管理所需的四种价值体。

2.迭代过程中的架构调整

  • 第一次迭代确立了原始架构:Advenurers管理Adventurer,Adventurer里有Bottle,Equipment,Food这三个类
  • 第二次迭代:添加了pack概念,于是创建了Pack类,每个Adventurer中有一个Pack实例
  • 第三次迭代:引入了战斗概念,与是创建了Colosseum类,在全局看来与Adventurers并列
  • 第四次迭代: 引入价值体概念,于是建立Commodity接口,统一管理价值体
  • 第五次迭代:引入shop概念,于是创建shop类,在全局看来与Adventurers,Colosseum关系并列

3.junit使用心得

关于junit,此次OOpre的覆盖率要求可谓是让我绞尽脑汁,思考如何省力的对程序每个分支进行覆盖。然后我想到了导入自己编的一些数据点,虽然不多,但是每条数据点都能覆盖到对应方法的各个分支,如果对程序有调试需求的时候就临时加入assert之类的测试语句(最后得删掉,不然交上去损失覆盖率),这样能优雅的对程序进行测试了。(虽然不太正规,但貌似....有用?)

4.学习OOpre的心得

        在OOpre的学习与迭代中,我真正感受到了架构的重要性。在大一C语言课程中所有东西都在一个文件里,一个过程看着烦就扔函数里,哐哐往下怼就完了,而且代码量也小,也没有什么迭代开发,但面向对象就不一样了。

         不合理的架构面对新增需求时寸步难行。如果此时再去重构,面对近千行(之后正课可能会数千行)的代码绝对会让我当场崩溃。所以要学会及时重构,在新增需求时已经感受到问题时万万不能犹豫,因为这次撑过去了下次又该如何是好。比如,这次我埋的最大的坑就是我的输入是一次性读完,这时候面对新增“fight”需求已经相当别扭,如果再迭代下去,新增其他的需求呢?后果不堪设想。好在OOpre迭代以及结束了,侥幸逃过一劫,正课的时候万万不能再犯这种错误。

        还有就是合理封装。封装思想是面向对象的基本思想之一。在C语言中所谓的封装就是把一段代码扔函数里,让自己看到清楚一点,但是大体看来还是较为随意的。面向对象就需要我们把一些长的方法拆散到其他类的方法中,通过调用来执行。其好处有三:

  • 一目了然,简洁,代码看上去清楚,而不是一团浆糊。
  • 方便找bug,封装后可以快速定位并缩小bug所在范围。
  • 便于代码复用。有时候拆出有泛用性的小段在新增需求时可能有用,这时候就不用重新写了

OOpre在历次迭代中大幅训练强化了我们的封装思想,这确实使我受益匪浅。

5.一些建议

  • 数据点再强一些罢!我强测寄了两次,两次都是非常愚蠢很容易出问题的大错误,我自己编的数据点愣是没测出来(可能是数据量太小了),所以恳求中测数据点也强一些。
  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值