第四单元总结
homework13
架构如下:
复杂度分析如下:
架构设计及OO方法理解演进
从最开始的面向过程到进入第一单元开始注意对象实体之间的关系,以及为实体的属性设置方法等开始培养面向对象的思维,了解面向对象所包含的一些思想和原则。进入第二单元后线程间的调度关系则对架构提出了更高的要求,对于每个对象不仅要求自身能相对独立,在处理涉及多线程的问题时也要求能够准确找到每个对象和线程之间的对应关系,以及公共资源调用时的互斥关系。再到后两个单元认识JML和UML的规范化编程,架构已经设计好,需要处理的是数据结构和数据边界以及算法上的细节问题。对于面向对象的理解也从认识OO,到深入OO,再到规范化编程中的将OO转化为自己高度抽象化的工具。
测试理解与实践演进
在测试方面我在第三单元开始学会了Juit构建测试集,并辅助搭配log信息进行调试。log调试在某些地方很有效,比如第一单元的调试不涉及多线程可以使用IDEA的断点和debug模式查看容器和变量信息,来逐步调试,然而进入多线程后逐步调试会影响进程间的交互结果,掩盖许多可能存在的bug。因此使用log追踪想要的信息可以在不干扰运行交互的同时进行调试。
课程收获
在今年需要用到C++的作业里我很快上手并应用到了C++的对象和类以及继承,可能就是我最大的课程收获。OO课程学习的内容有很大的迁移性,如何测试如何调试如何理解架构这些都是不仅局限于这一课程的技能点,而理解到的关于面向对象的知识也不仅仅局限于java这一门语言,更是横向学习迁移时的知识储备。同时,课程中对于官方包的应用和便利性,也让我窥到了java便利的一角。
改进建议
1.强测bug提交的一次改动有行数限制。这点可能和我存在的bug不是那种修改几行边界值就能修复有关,例如第三单元的一些方法没能通过强测点的原因是使用算法需要重写,这个时候提交一次bug需要改动的行数超过了限制行数,就需要进行额外的沟通。
2.作业难度梯度的设置。从个人角度出发几乎所有单元的难度曲线都不是从自身接受的点稳步爬升的,而是会出现初次作业很难以及第二次作业难度降低的感觉。
3.实验反馈。两周一次的实验结果虽然有在下一周的课程上提到通过人数和分数平均值一类的数据,但是对自己上周的实验结果是没有反馈的,对于实验细节仍然抱有疑问的同学如果能得到一些反馈,比如自己的代码是否通过所有样例,得到什么分数就,填空题的所有答案是什么,这些反馈相信能更好的反哺这学期课程的学习。
线上课程体会
线上课程留有的课程视频可以反复观看,研讨课所使用的ppt也很实用,甚至还有直播录屏。简单来说,这学期的线上课程虽然少了线下课堂的一些优势,比如面对面教学讨论,比如课堂的氛围,但是很适合自学占很大比重的计算机类课程。