加载中...

实验2的一些心得体会

lab2写了许久,诸多感想,下面简单谈一下

1 实验过程中收获的经验和教训

  • 在实现ADT之前,先写测试策略和测试用例,这样做有助于帮你深入思考,并且有助于打磨ADT实现的许多细节
  • ADT的Spec在前期的设计非常重要,直接影响后期实现的难度
  • Spec里面要写的尽可能的细致,将所有想到的可能情况都写出对于的解决措施
  • 同一个接口类,不同的实现方式,工作量差别很大

2 针对以下方面的感受

(1) 面向ADT的编程和直接面向应用场景编程,你体会到二者有何差异?

  • 面向ADT编程与面向应用场景编程有相当大的差异。
  • 面向ADT编程要求对编写的程序整体有充分的认识,要考虑接口、抽象类、类的整体设计,考虑哪些部分能够复用(可以复用的模块,尽量往父类中放),哪些部分才需要具体实现。
  • 面向ADT编程做的好可以节省大量时间;而面向应用场景编程则有“就事论事”的意味,好处是针对一件事做,编程思路简单,问题是工作量大,复用性低。

(2) 使用泛型和不使用泛型的编程,对你来说有何差异?

泛型可以适应更多的应用场景,相对不使用泛型复杂度略有提升,使用泛型时避免了类型转换的麻烦,存储的是什么类型的数据,取出的就是什么类型的数据。

(3) 在给出ADT的规约后就开始编写测试用例,优势是什么?你是否能够适应这种测试方式?

在给出ADT的规约后就开始编写测试用例,这样做能够不受已有代码的干扰,完全就函数的功能编写测试用例。其好处在于:提高了正确率与效率。
在Lab 2中初次接触到这种编程方式,有些不适应,还需要多加练习。

(4) P1设计的ADT在多个应用场景下使用,这种复用带来什么好处?

减少了重复工作,提高了软件生产率,有助于提升软件质量,也提高了编程体验。

(5) 为ADT撰写specification, invariants, RI, AF,时刻注意ADT是否有rep exposure,这些工作的意义是什么?你是否愿意在以后编程中坚持这么做?

  • 可以明确ADT的实现思路,方便了未来的自己以及其他的代码阅读者
  • 同时能够时刻提醒自己注意规范,检查是否有表示泄露
  • 虽然增加的工作量,但是利人利己

(6) 关于本实验的工作量、难度、deadline。

本实验的主体工作量在做完以后回头看,工作量适中,就难度而言也并不算特别大,但deadline相对较紧
而且在MIT的页面上,题目要求以英文形式介绍,写的并不算特别清晰,要点分布分散,翻译花费了不少时间。

(7) 《软件构造》课程进展到目前,你对该课程有何收获和建议?

该课程难度较高,课上学习与课下实验并进,相辅相成,体验感较好,但是实验需要大量时间来完成,希望可以增加实验课学时

posted @ 2023-05-18 01:21  凌风647  阅读(41)  评论(0)    收藏  举报