BUAA-北航2023秋季学期面向对象先导OOpre-第八次作业-博客总结

本文总结了作者在BUAA-2023秋季学期面向对象先导课程OOpre中的第八次作业经历,包括类与接口设计、Junit使用体会、学习心得和对课程的建议。强调了架构改进、模式理解及代码重构的重要性。

BUAA-2023秋季学期面向对象先导OOpre-第八次作业-博客总结



一、最终架构设计

1. 类&&接口

  • Main

    主类,包含输入指令、全局数据结构等。
    更好的架构是将输入指令与全局的存储数据分离形成两个独立的类,再上层是主类。
    (因为太懒所以没这样重构)

  • Commodity(接口)

    • Adventure

    • Bottle

      • RecoverBottle
      • ReinforcedBottle
    • Equipment

      • CritEquipment
      • EpicEquipment
    • Food

    价值体接口,下有冒险者、药水瓶、装备、食物。
    其中药水瓶与装备下又分别有两个子类,表示不同功能的药水瓶与装备。

  • Lod => FightLog

    Log类表示单个的战斗日志,FightLog类实现战斗日志相关的操作。

  • TradeRecord => Store

    TradeRecord类表示单个的商店交易记录。
    Store为单例模式,负责存储交易记录以及进行交易、生产商品等相关操作。

  • Factory(接口)

    • BotFactory
    • EquFactory
    • FdFactory

    工厂接口,下有药水瓶工厂、装备工厂、食物工厂,负责生产不同的商品。
    一开始设计工厂的时候我还想在药水瓶和装备工厂下再进一步细分,但由于这样一来类太多了过于混乱,因此重构成现在这样。

  • ObserveData => Observe

    ObserveData表示单个的受观察者的数据。
    Observe表示一个雇主与它的雇佣兵之间的观察关系,负责存储观察数据、进行观察(援助)相关操作。

2. 总结

架构不足之处很明显,(我一直都了解但就是懒得改),大体有两处,分别是类的内容混乱(最严重的是主类)以及没有对不同的类构建不同的层级目录自认为对于工厂模式以及观察者模式的应用较好


二、迭代过程

大体上分为下面几个过程:

  • 初始只有基础的冒险者、药水瓶、装备以及主类。
  • 加入了背包,整体架构几乎不变。
  • 加入了战斗模式,新增战斗目录等类;此时主类方法快到60行了,因此开始将每个指令分离分别单独成方法(后续其实应该进一步将指令以及数据从主类分离,进一步抽象化)。
  • 药水瓶以及装备的种类增加,新增子类分别继承原先的药水瓶类、装备类;新增价值属性,将价值体集成成为接口。(这个时候类就已经很多了,其实应该开始构建层级目录了,提高可读性、逻辑性)
  • 增加了商店以及援助系统,应用工厂模式、观察者模式、单例模式。

刚开始几次作业真的跟老师说得一样:按照写c的方法写Java…后面经过几次重构之后代码就变得越来越抽象了,封装次数也在变多,也认识到了Java跟c的一些区别。


三、Junit使用心得

1. 有点用(但不多)

自己编一些数据样例,是可以起到一定作用的,但自己编写的强度以及广度肯定不够,(不然还要强测干什么)
在后几次迭代中,我在中测前用junit自测,也发现了一些bug,但是也没有出现一次中测直接过的情况。

2. 写的过程很曲折

我重构test的次数是最多的…
到最后我只保留了一个test类,名字叫MainTest,顾名思义,在这个类中我对主类所有的指令进行测试,还算比较简洁~~(也很方便刷覆盖率)~~,但如果真的想测试各个方法的功能的话还应该要挨个写test。

3. 耗时中等偏多

上面也说了我test重构了很多次,再加上如果你真的想依靠test来发现自己的bug的话就要好好认真编测试数据,因此耗时应该不算少。


四、学习oopre心得

  • 应该大概差不多可能算是已经Java入门了吧…
    • 了解到了工厂模式、观察者模式等不同的模式
    • 认识到了深克隆、浅克隆的区别
    • 对于面向对象的了解变得透彻了(应该)
  • 迭代真的挺有讲究的,要做好每次作业都重构的准备*(要尽量避免在自己的屎山代码上继续拉屎)*。
  • checkstyle代码风格检查真的挺恶心有用
  • 初步学习到了git的使用,这对于日后学习工作都很有帮助
  • 心态抗压能力以及修仙熬夜能力的锻炼

五、对oopre课程的建议

  • 如果可能的话,每次迭代之后给予一些规范的或优秀的架构样例,或者将下次迭代的要求提前公布,这样能够很大程度上减少同学们的重构次数,减轻课业压力。
  • 刚开始配置git等过程真的挺麻烦的,要是能有更详细的教程(最好是视频形式)就可以减轻一些难度。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值