OOPre结课总结

OOPre结课总结

历时九周的OOPre终于在最后一次迭代中落下了帷幕,从第一次迭代,到最后一次迭代,类的数量从4个增长至13个,代码量也呈几何倍增长,在这个过程中对“面向对象”这四个大字的感悟也随着代码的迭代在我的脑海中迭代,在最后一次迭代中也算是完成了一份相对满意的答卷,也开始期待着OO正课的到来。以下我将从架构设计,使用Junit的心得体会,学习OOPre的心得体会,对OOPre课程的简单建议四部分来对这门OOPre做一个结课总结。


Part1 架构设计

1.1 框架设计的迭代历程
  • 面向过程编程:在第一次迭代设计的时候,只要求需要Adventurer、Bottle、Equipment再加上一个Main类组成。到后面开始慢慢迭代出Food类、FightLog类、Equipment和Bottle的子类等一系列类。在前几次的迭代过程中为了图个方便省事,我将所有的指令操作和FightLog类的相关操作都放在了Main类中。后来Main类变得越来越臃肿难看~~(活生生的一坨逻辑杂糅的屎山代码)~~,于是我开始意识到面向过程编程和面向对象编程的区别。
  • 重新设计架构:为了让整体的逻辑变得再次清晰,我从Main类中分离出了Command类和FightLog类。将所有的操作指令都放入Command类,通过Command.commandCenter调度全局;同时将战斗日志放入FightLog类中进行统一管理。由此,耦合度降低,调度逻辑变得清晰起来,各类分工明确,各司其职。
  • 面向对象编程:得益于架构的重新设计和重新设计架构时得出的经验,在后续的迭代中逻辑十分清晰,子类继承父类,接口调度共性,后续代码设计十分顺畅,有种洋洋洒洒的快感,迭代出了CritEquipment、EpicEquipment、RecoverBottle、ReinforcedBottle类和调度他们价值体共性的Commodity接口,还有在最后一次迭代中使用单例模式的Store类。
1.2 最终架构设计
功能
Main获取输入,将输入传入commandCenter中
Command调度全局,完成所有指令功能,共有23种操作
Adventure冒险者类,承载了冒险者的各种状态和冒险者物品的状态,还包含了冒险者的各类行为
Bottle药水品类,普通药水瓶
RecoverBottle百分比回复药水瓶,继承了普通药水瓶的所有功能
ReinforcedBottle强化药水瓶,继承了普通药水瓶的所有功能
Equipment装备类,普通装备
CritEquipment暴击装备,继承普通装备的所有功能
EpicEquipment史诗装备,继承普通装备的所有功能
Food食物类
Commodity价值体接口,所有物品类加上冒险者类都与价值体结构相接
FightLog战斗日志,所有对战斗的处理和对战斗日志的储存都在这个类中
Store商店类,以单列模式构建的一个商店平台,所有买卖操作都直接调用Store类

Part2 使用Junit的心得体会

在老师眼中Junit是一个十分有用的Debug插件,通过对所有类、所有方法、所有分支的全覆盖检测判断代码是否有bug。但是在同学眼中,Junit就是个无用且繁琐的玩意,在好不容易写完代码,过了样例之后,一想到还要写一堆Junit,这感觉简直让人崩溃。尽管写Junit让人崩溃,我们还是在迭代的过程中体会到Junit的强大功能和在工程代码中的实际意义。在实际的工程运用中,庞大的代码量让肉眼Debug几乎成为了不可能的事情,但是每一个微小的Bug对于整个工程来说都有可能是致命的,此时Junit就体现出了它独特的优越性,让程序为我们Debug,通过对整个工程的全覆盖来减少bug产生的概率,覆盖率越高说明出现bug的几率也就越小,在Junit覆盖检测整个代码的过程,通过断言(assert)来排查某一步或某个方法是否有Bug,达到快速Debug的效果。因此Junit对于我们后续开发超大代码量的大工程来说是十分有意义的。


Part3 学习OOPre的心得体会

其实我已经将学习OOPre的心得体会融入到了前两个Part的叙述中,这是一个不断体会、不断顿悟的过程,是从面向过程编程到面向对象编程的一个过程,在对代码的设计完善的过程中不断体会什么是面向对象编程,在这个过程中寻找快乐,因为高度分类且低耦合的代码无论是从外观还是逻辑上都让人身心愉悦。

除此之外,学习OOPre还有一个重要收获,就是学会了git的使用,体会到了版本管理的重要性,同时对git的学习也帮助我打开了github的大门,让我见识到了开源代码世界的广阔与伟大。


Part4 对OOPre课程的简单建议

建议只有一点,希望OOPre的PPT能更加完善一些,尽量以代码实例替代抽象的文字讲解,好多次听的云里雾里都是因为那部分只有文字讲解而没有代码实例。除此之外,我认为OOPre的课程体系相较于其他专业课课程已经算得上是十分完善了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值