2021-OO-第四单元总结
一、本单元作业架构设计
-
按照UML的层级结构,对官方包进行了包装,以适应自己的需求,同时隐含UML逻辑结构
-
-
对存储容器和UML解析进行了封装,精简了代码
-
二、四个单元中架构设计及OO方法理解的演进
-
正确性需求——是否正确
-
典型:第一单元的递归下降
-
是真的不知道怎么实现,在大佬的指导下才知道了递归下降,然后用C的方式写了一个较为面型过程的程序,勉勉强强过了。考虑面向对象的方面只是写了很多类,并尽量让他们各司其职,但实际上解耦做的不好,(也许是这个题目就要求有很强的耦合性?)
-
-
-
精简性需求——是否必要
-
典型:第二单元的电梯
-
大家都在纠结是否写调度器,我第一作业就写了,最后一次才发现貌似没啥用,我们的调度过于幼稚,反而一个bug送进cRoom一次,性能分也不好。
-
以及checkstyle中的方法不能超过60行、类不能超过500行的要求。
-
-
-
审美性需求——是否优雅
-
???我写的一点也不优雅
-
但是很希望自己的代码能够具有一定的“正交原子性”
-
-
三、四个单元中测试理解与实践的演进
-
样例级测试
-
对于指导书中的给出的样例进行测试
-
对于指导书中给出的样例进行改编测试
-
-
随机级测试
-
使用评测机随机生成样例进行评测
-
主要是在不急不慢,又很懒的时候找一些浮于表面的bug
-
-
压力级测试
-
对于程序的边界性(时间、数据类型)进行测试
-
对于程序的鲁棒性进行测试
-
-
覆盖性测试
-
当有一个bug真的搞不定了,就使用程序遍历每一种可能的情况,进行覆盖测试,但是对于特定单元不太有效,属于究极杀招
-
-
针对性测试
-
对每个功能的情况进行思考,构造典型的样例
-
一般在有bug了再使用这种方法
-
四、课程收获
-
技能上
-
对于Java语言有了很好的训练机会,借此机会学习了CoreJavaⅠ、Ⅱ中的内容
-
对于Git的使用,IDE的进阶操作等也都更加熟练。
-
对于自己搭建评测机也有了一定的了解。
-
-
方法论上
-
对于面向对象思想的理解更加深入,从最开始的“多写几个类”到理解与之前写C语言程序的区别,再到能够写出更加抽象更加解耦的更优雅的代码。
-
通过互测,阅读了很多大佬同学以及官方包的源码,感觉看不大懂,却大受震撼(。
-
-
想法上
-
感觉在6系,很期待这些重课。OO给人的感受可以说是这些重课里最棒的,有挑战有压力,但是也有机会做好,每个水平的同学都能够在其中找到自己的位置。
-
五、改进建议
-
关于指导书
-
指导书的编写可以更加清楚一点,比如UML单元总感觉在猜谜语,(当然现在指导书写的已经很厉害了,有股离散1的味儿)。
-
-
关于评测
-
感觉每周一次的DDL确实压力很大,我感觉自己对于架构的理解可能就被“通过、正确”的压力推到一边了。(也许可以减少点任务量,然后在测试时对“架构”这方面做一些评测。)
-
-
关于互测
-
互测的机制对于分数没有太大的直观感受,大家不测貌似也没啥大问题,就很容易让人躺平。
-
-



浙公网安备 33010602011771号