在四个单元中架构设计及OO方法理解的演进
在完成第一单元作业时,着实对面向对象摸不着头脑,三次作业几乎都是面向过程写下来的,也确实尝试应用设计模式但是无奈思路受阻、下笔十分之慢,还是屈服于了面向过程,架构也是比较丑陋;在学习第二单元作业时,开始对面向对象有一些理解了,初步有了一个模块做一件事、各模块间独立等等这种面向对象典型思维,架构方面更加注重功能单元的高内聚、低耦合了,但是架构仍然不能很好地满足扩展需求;在学习第三单元作业时,一开始并没有意识到架构的重要,只是照着JML注释翻译代码,随着需求的增多和难度加深,才意识到架构的重要性,对于面向对象方法方面感觉体现得不是很明显;在第四单元中吸取了第三单元的教训,建立了自己的map类等,在架构上好看了一些,满足可扩展性方面还不错,对oo方法中的抽象、分层等有了进一步理解。
在四个单元中测试理解与实践的演进
测试实践方面我个人做得不是很好。在前两个单元主要采用手动测试特殊数据的方法,这种方法在第一单元确实行得通,但是在第二单元的多线程部分就显得力不从心了,所以我的第二单元成绩也比较惨。在第三、四单元主要采用Junit测试,这样测试确实找到了很多bug,但是一些极端数据等仍然需要认真思考,并不是简单的Junit测试就可以找出极端数据所测试出的bug的。在测试的理解方面,刚开始接触这门课程时,不是很喜欢测试,对程序的测试也不是很充分,也不理解为什么要做那么多测试,认为输入几个样例得到正确结果就可以了,但是渐渐地通过学习我认识到了测试的重要性,能够写出满足基本功能的程序并不难,难的是写出能够经受各种测试——包括性能测试的优质程序,并且我深刻地认识到你永远不知道自己的程序会出现什么奇怪的bug,可能是种种巧合拼凑在一起就成就了一个bug,可能是忽略了一个条件就成就了一个bug……,所以大量的、有质量的测试是极其必要的。
总结课程收获
回望这一学期的oo之路,真是披荆斩棘,着实不易,收获主要有以下几方面:
(1)学会了java语言,学会了工厂模式等设计模式,了解了多线程、JML、UML的应用。
(2)了解了抽象、分层等设计思想,对于以后的学习工作很有帮助。
(3)极大地提高了个人的抗挫折能力,练就了平和的心态,个人认为oo课程的魅力在于付出多少,就会得到多少回报,可能开始接触一个新知识时束手无措,但是只要坚持下来,摆平心态,克服挫折,你就是最靓的崽。
给课程提三个具体改进建议
(1)个人认为多线程第一次作业难度略大,当然也是因为我太菜了,希望能适当均衡一下难度。
(2)理论课的讲解有时会出现学用脱节的情况,希望理论课不那么晦涩。
(3)个人认为类似第三单元这种可以适当给出提示建立图结构,可能大佬并不需要,但是我这样的菜鸡确实没有这个意识。
线上学习oo课程的体会
(1)线上学习理论课更加方便,有不懂的地方还可以回放反复观看
(2)和同学交流不方便了,没有以往线下面对面讨论的感觉了
(3)上课没法见到老师,还是有点失望的,还是非常期待和老师在课堂上交流的感觉的
(4)感谢老师和助教的辛勤付出,我从这门课中学到了很多,希望oo这门课越来越好!