BUAA-面向对象先导课程总结

面向对象先导课程总结

架构设计

最终架构设计

  • UML类图
    design

过程调整

  • 第一次调整

    在hw3中对先前代码进行了一次较大调整,在最初编写时,在Main中进行了命令的解析以及部分命令的实现,导致把许多本该属于Adventurer中的方法写在了Main中,造成结构层次上的混乱。初期可能只是从命令实现的方便性出发编写代码,而没有考虑到其合理性,甚至出现了由于没有厘清各类中需要实现的功能,不同类中出现了内容极为相似的方法,在一定程度上增加了代码的复杂性。在调整时,对于每一个方法,首先思考其作为谁的方法、由谁调用才是最为合适的,再将其挪至对应类中,再对方法进行调整。
    在方法实现时,先前一个很大的问题就是参数过冗余,基本是需要用到的参数全部传递过去,当在实现过程中发现功能无法完成时就继续添加参数,其实其本质仍是没有厘清各类应该负责的功能,把过多的工作都集中在Adventurer中完成,为解决这种问题,就要把多余部分交至其他类中完成,以及对于重复过程进行抽象提取,形成新的方法,以减少方法的冗余问题和接口的混乱。

  • 其余调整

    随着命令条数的增加以及命令形式更加多样化,如何解析并完成命令成为新的问题。最初采用的if-else分支语句,在中期出现类中方法行数超出规定值的问题,不得不寻找新的实现方法。为解决这个问题,新增Utils类在其中完成命令的读取和储存,并新增Parser类用于命令的存储,将命令(operation)和日志(logs)作为其属性,以解决新增的14命令中对于战斗日志的处理和操作问题。

使用junit的心得体会

在历次迭代的过程中,都要求我们自行对代码进行测试,并且对Junit测试覆盖率有所要求。

在迭代初期,代码复杂度较低,在编写过程中产生的bug较少,导致对代码的测试环节常被忽略。然而随着题设要求的增加,运行时出现的问题越来越多,愈发意识到测试的重要性。特别是在最终修复出bug后,会发现如若能在先前对代码进行功能测试,其实就可以减少大量的bug排查时间。测试看似是在初期“浪费”了时间,实则会减少debug时的工作量,是重要且必要的。完成这样的认识转变,是我在先导课程中十分重要的收获。

测试的覆盖率也是一个很重要的指标,在测试中对覆盖率的要求,提醒我要充分测试代码,不遗漏分支,对尽可能多的语句进行检查。

课程体会

  • 从面向过程到面向对象

    完成从面向过程编程到面向对象编程的认识转变,是在先导课程中很重要的一个内容。在迭代初期,代码更像是经过java翻译后的c语言,缺乏封装的思想。随着历次课程的不断深入和在迭代中的反复体会,开始学会如何从面向对象出发,构建整个代码。在迭代过程中,也开始反思先前的构架是否有合理性,如果不合理,又应该如何调整。从如何抽象提取出每一个类,再到使用继承还是接口,抑或是其他在构建过程中遇见的问题,都有在帮助我进一步了解“面向对象”的思想。

课程建议

  • 建议可以教一教如何构造测试数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值