oopre结课总结与反思

一、代码架构以及迭代过程中的调整考虑

(跳过那个一言难尽的仓库配置环节......)
~第一次接触Java的时候,我以为和C++里面的面向对象内容差不多,也没理解oo的含义,于是乎,上手就码了一堆套着oo外壳的C++(我个人感觉这个比喻挺贴切的),并在第三次迭代的时候掉入了大坑,不得不推翻重写,属实心酸。其实我开始并不想重写,但是加之对Java的内存回收机制的理解错误,和傻傻分不清对象内存空间与对象的指针的区别,修改错误几乎不可能,所以我毅然决然选择重写(600多行啊)。

~经过一次重写之后,我走上正轨,架构一直延用至最后,不过我并没有加装接口和使用工厂之类的东西,个人感觉不适合(理解有误请指出),因为如果强用的话有点为了用结构而用结构的感觉,本作业提出的要求并不需要弄得这么复杂,要练习使用完全可以找搭配的、合适的练习,没必要简单问题复杂化。这个后面再谈。

~于是我就确定了 以类为基础,类扩展为功能细分,以对象为数据体,进行各种操作的架构,个人感觉还挺简单实用的,下面细说一下为何这几个内容就够了。

~类,顾名思义,就是对一类事物的刻画,类里面我认为应该具有该类事物的共有属性、这类事物在与其他类型事物交互时需要的方法和查看修改自己属性的方法。依托这个认识,举个例子,当冒险者需要增加一个bot时,无论是买,还是怎么样,这个操作的直接发起者当然就是直属于冒险者类的事物,于是我们可以为这个类添加一个方法,并且只要冒险者获得bot的方式不变,我们可以永远信任这个方法,不会因为其他操作而牵一发动全身,甚至细分之后,我们可以把冒险者的购买行为也认识为一个这类事物的方法,总而言之,一个类方法的增加,我们可以通过这种生活逻辑分析、归类来确保增加过程的独立性,这样构建出来的类和方法也会因为符合日常思维习惯而有较高的可读性。

~而一个类属性的增加,也可以用这种方法进行,比如我的bag类,分析之后觉得应该和adventure类耦合,于是就new了一个bag对象(很合理,我的每个冒险者都背了个小背包),并为冒险者增加了一系列针对掏背包的方法(合理,确信)。到这里,相信读者也能理解我是如何定义归类一个类应该具有的private变量了,这里就不赘述了。

~基于上述思想,在加上类扩展,和管理好每个容器内的对象,完成课程要求十分就变得十分简单,迭代时,只需需要新的类就开,需要子类就extend,分门别类整理,方法与类逻辑自洽,就好了。

二、使用junit的心得体会

~有一说一,这没啥好说的,对自己代码严谨性自信的话就随便写写(有的是方法达标),不自信的话还是好好思考一下数据。不过说点我不应该说的话,junit功能挺鸡肋的,正课时感觉不如自己写个测评机。( 可能我认识不够

三、学习oopre的心得体会

~其实在一里面我就已经大概说明了我思维的转化,就是把类看成一个个书架,每一个书架归类一类书,相应分区的书可以和 外界产生交互,输出自己的信息,或者接受信息。而对象标签可类比为我们可以通过一个个不同的标签找到这本书,虽然这本书可能有许多的标签,但是书就只有它。我们把它从一个容器移动到另一个容器的过程,就是把这本书在一个个书架之间移动的过程。多个容器同时包含一个对象的情况这个例子不再适用,但可以理解为元素和集合之间的关系,嗯,贴切(自恋.jpg)。

~另一个印象深刻的事物就是 buaa版checkstyle,这个上面我可是吃了大亏,我之前一直不知道每次新建git仓库链接之后,会重置,得重新配置。于是我高兴地埋头狂写,导致了一个历史遗留问题,我的主类里面永远超过60行,这也是本次oopre的败笔(呜呜)。这个代码风格属实纠正了我好多习惯,适应过程极其困难,包括一些缩进习惯,空行习惯,甚至if后面跟空格,运算符号左右加空格,{括号前面不能换行等等,属实难顶,个人觉得我以前写的代码也挺好看的嘛,结果弄得就像 “戴着镣铐跳舞”,不提了。

~至于后面介绍的工厂化架构,通过接口对类的分配、分派,我实在觉着用在oopre的操作里面别扭,我也不知道为什么,大概需要我继续学习摸索吧(加油!)。

四、对oopre课程的简单建议

~oo课程组我从一开始就挺喜欢的,助教热情,温暖,认真,老师也始终为我们着想,这也是我觉得一个大学课程该有的氛围,主要计院有些课程实在冷漠如机械,无论制度还是人。我也会推荐学弟学妹报名oopre的,来年oo正课再见。( 特别鸣谢nrjj,哈哈)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值