实验3的一点心得体会

发布时间 2023-05-24 00:58:37作者: 凌风647

针对以下方面的感受

  1. 重新思考Lab2中的问题:面向ADT的编程和直接面向应用场景编程,你体会到二者有何差异?本实验设计的ADT在五个不同的应用场景下使用,你是否体会到复用的好处?
    面向ADT编程,需要提前思考整个项目的结构,以期做到较高的代码复用程度。在开始项目之前,就需要经过许多深思熟虑,项目过程中也可能出现许多次的重构。使用设计模式更是可以大大增加代码的复用程度。由于没有办法得知实验四和五的要求,只能尽可能地对整个项目进行抽象,以期望在需求变动的时候可以以较小的代价完成变动。
  2. 重新思考Lab2中的问题:为ADT撰写复杂的specification, invariants, RI, AF,时刻注意ADT是否有rep exposure,这些工作的意义是什么?你是否愿意在以后的编程中坚持这么做?
  • 意义:防止在复杂的应用场景中出现复杂且难以调试的错误。
    我会在能力允许的情况下,尽量写清楚.
  1. 之前你将别人提供的API用于自己的程序开发中,本次实验你尝试着开发给别人使用的API,是否能够体会到其中的难处和乐趣?
  • 难处在于需要精心设计API才可以使适用范围尽可能扩大。
  • 乐趣在于API可以带来效率提升,但同时,学习别人的APIs也有很大的成本.
  1. 在编程中使用设计模式,增加了很多类,但在复用和可维护性方面带来了收益。你如何看待设计模式?
    使用设计模式更是可以大大增加代码的复用程度。
  2. 你之前在使用其他软件时,应该体会过输入各种命令向系统发出指令。本次实验你开发了一个解析器,使用语法和正则表达式去解析输入文件并据此构造对象。你对语法驱动编程有何感受?
    从读入的文本中总结出规律,并将之抽象地表达为表达式的形式。然后还能以此接受传入的文本,保证了匹配的效率和性能,这个解析器很好用. 语法驱动编程为实际应用提供了很大的便利,用户无需繁琐地一行一行地输入信息,而只需提供一个文件以及一定的语法规则即可.
  3. Lab1和Lab2的大部分工作都不是从0开始,而是基于他人给出的设计方案和初始代码。本次实验是你完全从0开始进行ADT的设计并用OOP实现,经过三周之后,你感觉“设计ADT”的难度主要体现在哪些地方?你是如何克服的?
    主要难度是选择合适的数据结构,如果选的太简单,可能满足不了需求,选的太复杂,编程过程就很复杂,很难取舍.而且也会出现写到一半,删掉重新选数据结构的过程.我是通过一点一点摸索,如果发现现有的结构很难继续进行,就推翻重来(虽然克服了,但是花了大量的时间)
  4. 你在完成本实验时,是否有参考Lab4和Lab5的实验手册?若有,你如何在本次实验中同时去考虑后续两个实验的要求的?
    没有
  5. 关于本实验的工作量、难度、deadline。
    本实验难度较大,工作量较大,时间不足
  6. 到目前为止你对《软件构造》课程的评价。
    作为大学为数不多的编程课,含金量很高,教的很有用,能够大幅度提高自己的工程能力吧,比如设计模式就是程序员精髓,感觉是这学期最值得上的课了.