BUAA oopre课程总结

OOpre 课程总结

1.作业最终的架构设计

架构如下图:
在这里插入图片描述

在迭代的过程中对自己的架构做出的调整及理由:

  • 从在main函数里每一个输入都Scanner.next()到建立输入解析函数MyScanner:主要原因其实是main函数太长了,但是后来发现使用输入解析函数后,每次迭代添加指令就不用多加那些Scanner.next()了,非常好用。
  • 从在main class里进行fightlog相关的分析,到在FightLog类里进行这些分析:每个类就应该执行这个类该干的事儿,而不是像C一样都写在main旁边,挤在main class里。
  • 加入Commodity接口对adv、bottle、equipment、food进行管理:接口类很适合用于合并具有相同父类型的class。

2.使用JUnit的心得体会

说实话,我到现在还不太会用JUnit,所以我的心得体会都是在学习了别的同学的写法之后学到的。

  • 一定要把方法之间解耦!!我的问题就是方法之间连接的特别紧密,导致单元测试测试构造起来困难,测试出来也难以debug。
  • 题意理解有误的话,单元测试也难以检测出结果。所以要好好读题。
  • 单元测试也要留至少一天时间来写,构造数据所花的时间并不短。

3.学习oopre的心得体会

第一次进行迭代式的开发,在前面代码的基础上加新的设计,需要一个良好的架构。而这个架构我目前的程序不太拥有,所以后面几次迭代都挺痛苦。但是也学到了一些很有用的知识:

  • 从把很多很多分析都写在main里的c语言思维,到学会在各个类里分散方法;这正是从面向过程编程过渡到面向对象编程的体会。

  • 输入解析。这是我在倒数第二次迭代之前因为代码行数之类的问题才终于改过来的重大结构性问题!通过正则表达式"^\\d+"匹配每一个输入指令开头的op,对op==14进行特判,输入多行。最后用

  • String[] strings = line.trim().split(" +");
    inputInfo.add(new ArrayList<>(Arrays.asList(strings)));
    

​ 对每行进行分割,像一开始给的示例代码一样分割字符串。成为一个大的数组,每个数组里都有一个字符串数组。

​ 这提示我要多利用课程组给的代码设计,以及多和同学交流。并且要努力地再完美化一点代码,这对自己的提升很重要。(即不要得过且过)

  • 体会到了解耦提取方法共性的重要性!当功能和功能之间耦合度低,方法和方法之间共同部分大的时候,就要对代码结构进行调整了。很遗憾我总是担心沉没成本,迟迟不做改变,导致对最后写代码时的任务量造成了很大的影响。

  • 学到了debug的好方法。(这个应该是所有收获里最大的收获了)

    • System.out.println()好方法。在出错的地方打印出关键值,再找到关键值的来源,打印关键值的来源……直到找到上一步正确的关键值,却生成了错误的下一步关键值,那么这个生成过程就是有问题的。

    • 得到错误数据点后,如何在输入某个数据的时候设置断点(而非每个数据都会在那里断开)?

    if (in == 12345)
        {
            int a = 1;//随便写的一句话,就在这个地方设置断点
        }
    
    • 利用网上的在线文本对比工具。它的优点是,可以清晰地显示行数,以及帮助与同学对拍时的快速定位。可以结合文本对比工具和txt的查找工具,查找指定id的adv/bottle/……在错误数据之前的历次操作。
    • 倒推理方法。(同system.println.out所说)在出错的地方打印出关键值,再找到关键值的来源,打印关键值的来源……直到找到上一步正确的关键值,却生成了错误的下一步关键值,那么这个生成过程就是有问题的。

4.有待提高之处

(这点是我自己加的,写给自己看看)

1.整体架构搭建有问题。解决方案:看参考代码进行学习,记笔记。

2.JUnit不太会写。解决方案:其实还是代码耦合度太高的问题,先从根本的代码结构性问题开始解决,再参考好的代码进行学习。

3.部分语法其实不太会,比如正则表达式,需要课下再好好学。

4.调试的部分按钮,其实不知道是什么意思以及怎么用。

5.对课程组的建议

1.编写guidebook时,希望能有一条主逻辑(即推荐阅读顺序),在主逻辑之中有各种跳转链接。(记得第一周配置环境时,guidebook里的文件太多,并且没有推荐阅读顺序;互相援引,在配置好A之前要先跳转到B,但是B的配置又和C有关……;导致我和我身边的同学看不懂、很痛苦。明年oopre的时候如果能加入一条推荐阅读顺序,对学弟学妹入门IDEA及oo应该会帮助很大!

2.**希望可以在课程中间每两周/三周提供一次参考代码/参考架构,并给我们留出修改代码架构的时间。**在学习的过程中我经常感到我自己的代码架构不好,但是想改又无从改起的无力感;找同学要又不知道谁的代码架构是比较好的(要了太多代码,阅读起来时间成本太大了)。同时,一周一个ddl的时间十分紧迫,我常常为了节约时间,没有去修改代码架构。身边的同学也都有这个感受。如果能有比较好的代码示例或者架构提示,并且留出时间给同学们自我反思与修改,那么对于同学们的思维提升会有很大帮助:)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值