第四单元总结
一、本单元作业的架构设计

本次作业结构非常清晰。我在这里仅用了5个类来实现功能,其中MyImplementation用于提供统一接口,MyClassModel、MyCollaboration、MyStateChart、MyPreCheck用于实现各部分的功能。MyImplementation中以elements为参数分别构造各个类,由于本单元作业中的查询难度都不高且时间限制充足,因此我选择了在各个类中使用elements中的元素来完成查询任务,而不提前构造类图、状态图或顺序图。
二、在四个单元中架构设计思维及OO方法理解的演进
在第一个单元,我的思维还停留在面向过程式的编程思维,在构造时没能很好地发挥面向对象的优越性。尽管也将表达式、项、元素分别以类的形式进行的分割,但并未在其中设定任何属性,只在每个类中编写了divide方法,耦合度非常之大。当时在设计时仅以完成任务为目的,没有考虑代码的可维护性和可扩展性。
第二个单元是oo课程难度最高的一个单元,在这个单元中引进了第一次接触到的多线程。由于是全新的知识,我只能用保守的编写方法而不能随意发挥,因此被迫选择了较为大众的实现方法。但正因如此,我得以进一步理解面向对象的思维方式,理解对象间分工协作的思维模式及这样做的优点。同时,在学习这单元的代码编写时,我还掌握了各种模式的编写方法,逐渐体会到编写的代码在正确解决问题以外还有其他要求。
到了第三单元,面向对象式变成的思维模式已经基本建立,进一步引进了JML规格描述语言。在这一单元中,我们不再只是独自完成整个任务,而是在读懂的JML规格的基础上将提供的JML语言转化为代码语言。在这一单元,不再考验我们的整体架构能力,而锻炼的是我们参照整体设计的局部要求完成部分任务的能力,从而进一步体会面向对象方法在协作开发时的优势。
第四单元通过编写UML解析器,深入了解UML的树形结构以及类图、状态图和顺序图的工作方式,同时进一步强化了通过选择性查找阅读全局的部分代码进而实现局部代码的能力。在前面的单元总结作业中已经对UML类图有所了解,但并未对以元素呈现的形式有过了解。在深入理解了UML规格后,今后在编写UML或根据UML编写代码都能如鱼得水。
三、在四个单元中测试理解与实践的演进
在四个单元的作业中,我都只是通过了指导书里的测试样例,有些次作业自己构造了测试基础功能的数据,从未构建评测机或找同学对拍或使用课程组推荐的junit测试。由于中测数据较弱,每次提交测试若没有通过,只需查看错误信息就能大致判断错误出现的范围。但这也导致了强侧会因某些功能协调处出现问题。
四、课程收获
最大的收获自然是学到了面向对象的编程思路。具体至四个单元分别学习了层次化设计、多线程程序的编写、JML规格、UML模型。除此以外,我的规范化编写也得到了锻炼,在写代码时会考虑除了正确性以外的其他因素。同时,由于每单元作业在三次迭代后都有着冗长且逻辑繁杂的代码,我的长代码编写和维护能力也得到了锻炼。
五、改进建议
1、加强中测数据强度。中测和强测的强度差距过大,其中几次作业的中测甚至连基础操作都没有覆盖,导致在过了中测后经常因为一些难以发现但能造成严重后果的小问题而使强测暴毙。建议将中测强度适当提高,至少要将非细节的情况覆盖为好。
2、编写更加严谨的指导书。指导书的某些处存在歧义或难以理解的语句,使得在阅读上需要联系其他处反复理解,实在无法理解只能救助助教。还有某些部分存在空白,即编写代码需要考虑但指导书没有提及的部分。希望指导书能够将这些部分进一步完善。
3、缩短提交冷却时间。中测的提交冷却时间为15分钟,但除了某些及其难以发现的bug,其余的debug时间基本在10分钟左右,因此可以将冷却时间缩减为10分钟或更短。
posted on 2022-06-26 23:25 hacker_killer 阅读(34) 评论(0) 收藏 举报
浙公网安备 33010602011771号