OOpre个人课程总结

经历众多挑战之后,我终于通过了2023秋OOpre课程的全部考验,现对课程学习中的思考、收获、心得等做一些总结。

代码架构及其调整

最终架构:

画了一个大概的示意图,如下:

Main类只用来实现输入。Option类只有一个实例,接收Main中的输入内容,并逐行解析、处理(主要是调用Adventure类中的方法);对于较复杂的关于战斗模式的处理方法,将其封装入一个专门的Fightkind类中,在需要时调用、处理。由于大多数操作是针对某个adventure进行的,故Adventure类中有较多的业务处理逻辑。剩余的物品类,大多只包含构造方法和getset方法,shop实例中还有一些求相应属性平均值的方法等。

历代架构调整

第2-5次作业中,输入解析、处理未单独封装入option类,而是在main类。第六次作业中考虑到业务过多,不宜堆在主类,故新创建了一个专门的类来处理命令。此外,在细节方面做过如下改动:

第二次作业,输入解析、处理均放在了main类的main方法中,同时使用了大量的arraylist容器和遍历查找。

第三次作业,发现输入、解析、处理,特别是处理都放在main方法中会导致方法过长,故将输入放在专门的readin方法中,main方法中解析后,调用其它方法处理。同时由于很多时候靠互不相同的id查找对象,将很多arraylist换为了hashmap,减少了大量遍历查找。

第四次作业,新增了战斗模式,采取了一个很不好的做法:将所有处理方法写入main类中。

第六次作业,由于业务增多,考虑到main类中代码冗长,且继续迭代下去逻辑会较为混乱,决定将业务处理方法均封装入option类中,main类只负责调用;同时将战斗模式封装入fightkind类中,提升了架构的清晰度和合理度。根据任务要求,新增了相关子类。

使用Junit的心得体会

Junit利用Java以方法为单位编程的特点,提供针对单个方法的测试功能,有利于代码的正确性检查和bug修复。使用Junit,可以对逐个方法构造测试数据,检验方法的正确性;避免了整体代码测试出错时,无从下手。正确使用Junit,应该对每个方法构造测试数据充分测试,覆盖各个分支、边界情况,再加一些随机的数据。这样如果整体运行出错了,就基本只能是调用时出错了,只需重点检查调用的方法、传入的参数是否正确等。

学习OOpre的心得体会

1.面向过程到面向对象。面向过程注重函数体书写,以函数为单位编程,实现一系列函数过程。面向对象的思想方法与之完全不同。面向对象,将共有的属性和方法封装成类,将拥有这些属性并实现这些方法的单元抽象为“对象”,让一个个对象调用自身的方法,来实现复杂的程序。这极大地提高了代码的模块化程度(即所谓“封装”),让程序更便于书写和维护,也更便于大规模的开发。

2.coding能力与bug修复。在这门课中,我感到自己的coding能力得到了很大提升,这包括每次读题时分析业务需求、理解业务逻辑的能力,也包括在代码具体实现中保持严谨认真、尽量避免漏洞的能力。我认为,这两项是对编程人员非常重要的能力。此外,在出现bug时,用一定的技巧和手段,去尽快定位、修复bug,也是oopre课程带给我的收获之一,也是我在使用了较少提交次数的同时,全部通过强测的助力。

3.心态磨砺和抗压训练。这门课带给过我很多考验,也让我对接下来的OO正课强度有了一个初步的体验和准备。在接下来的课程中,无论是不是OO,无论我们遇到了什么样的困难,我们只能以“没有比脚更远的路,没有比人更高的山”的哲理自勉,力所能及地尽好自己的每一分努力。

感谢这门课程,让我从Java零基础的“小白”,有了一定Java的编程基础,感谢所有助教的辛勤付出。

对OOpre课程的两点建议

1.适当提升课程学分。以这门课的工作量和难度,完全不应值仅仅一学分(捂脸)。

2.适当放宽对Junit的覆盖率测试要求,因为有些main方法、输入方法、getset等方法,很难测试或者没有必要大费周折搞同样的测试。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值