经过6次软件构造实验,我学到了很多东西。
首先是java语言带来的便利。Java面向对象的设计相比C有了很大的方便,在编写java代码的过程中,我对java对象的理解有了提高,对类的继承、接口有了更熟悉的运用。同时java提供了丰富的库函数,如ArrayList、HashSet、Heap等等,可以帮助我更方便的书写代码。
实验3,4,5编写一个轨道系统模型,并且对他就不同的评价标准进行改造。
实验3以实现功能为主要目的,关键是理清类之间的关系,轨道系统模型有许多继承类,还有接口。设计时考虑不同轨道模型的相似之处,尽可能地把相似地行为写入公共地父类中,可以简化很多代码。其次了解了设计模式的使用。工厂模式、strategy设计模式的应用,使得写代码思路更清晰,安全性更高。一个难点是可视化的书写,由于之前从来没有写过,所以在网上搜索相关的基础代码进行修改,应用到自己的ADT上面。经过一番努力终于修改成功了。
这里提一下,最初写实验3的时候,老师就说过写3时最好看一下4,5的要求,因为4,5都是在3的基础上进行修改。如果3写的跟4,5的要求相差太大,那么在修改的时候就会很麻烦,之前也有同学提出过抱怨,但是老师不接受。所以我在写3时简略看了4,5的要求,由于当时上课还没有讲4,5的内容, 所以也是一知半解,不知道3要注意哪些方面,直到写4,5时才知道要做哪些大量的修改。
这里从了解完4,5后的条件重新审视3应该注意的方面。首先注意代码的风格。在4当中要求选一种代码规范,对代码进行修改。这里我选了google规范,由于规范相当复杂,有诸多要求,例如对各种名称、缩进、变量声明、括号的空格等等都有严格的要求。并且要求手动修改代码,我当时直接改了一年才改完,如果事先知道一种书写规范,从一开始就按照这个规范去写,那么会节省很多时间。
然后是对方法的spec、test书写。同样4对它们有要求,必须每个类都要有test、方法有spec。而且在写代码时,先写好spec和test也是很好的习惯,而且实验2也要求写过test,而且建议过先写test再写代码。因此写实验3时,要把spec和test做好,尤其是重要的、有风险的代码。
对于5,这里主要针对效率做修改。首先考察了不同文件读写方式的速度差异,也让我了解了不同的读写方式代码书写。之后是各种工具的使用,查看垃圾收集过程,对消耗内存大的代码做修改。
实验6针对线程,要解决猴子过河的问题。写线程代码时,要充分考虑线程安全性。例如如果2只对向而行的猴子同时选择上了一架梯子,那么会造成死锁。而且线程程序在运行检错时无法复现,也对debug带来一定难度。但是线程的存在使得多核处理器得到应用,使得程序运行更快。
总而言之,软件构造课的学习让我编写大工程项目的能力有了很大的提升。
软件构造学习感想
最新推荐文章于 2020-06-05 23:42:28 发布