软件构造第二次实验感想

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

经验:
①通过实验,我对于如何设计ADT有了一个初步的理解。
②通过实验,我掌握了Java的泛型相关语法以及泛型设计思想。
③通过实验,我掌握了EclEmma等工具的使用。

教训:
①在完成实验时,一定要提前做好规划,不要把任务放到最后一刻。
②要善用Git等版本管理工具,以便自己能够较好地管理自己的代码。
③在设计ADT时,一定要进行CheckRep,以防止违背RI.

针对以下方面的感受

(1) 面向ADT的编程和直接面向应用场景编程,你体会到二者有何差异?
答:
面向ADT比直接面向应用场景更抽象,思考难度较大;但是面向ADT比直接面向应用场景能够增加我们的代泛用性,更好地做到Ready for Change.

(2) 使用泛型和不使用泛型的编程,对你来说有何差异?
答:
我以前一直不使用泛型进行编程,因此刚接触时很不适应,有很多语法错误。比如,在设计时,我们要对泛型写spec(比如L必须是Immutable),较不使用泛型更抽象。

(3) 在给出ADT的规约后就开始编写测试用例,优势是什么?你是否能够适应这种测试方式?
答:
在给出规约后就开始编程测试用例,即Test-first Programming,能够更好地保障我们的代码的正确性。
于我而言,我觉得能够适应这种测试方式。因为我以前通常在编写完函数之后就不愿意再进行测试了,进而导致我的代码经常出现很多错误;而测试优先编程,能够“逼迫”我写测试,进而更好地保证我的代码正确性。

(4) P1设计的ADT在多个应用场景下使用,这种复用带来什么好处?
答:
复用可以增加我们的代码的适用性,即我们的代码并不是面向某一个具体问题,而是面向一类问题,进而使得我们Ready for Change.

(6) 为ADT撰写specification, invariants, RI, AF,时刻注意ADT是否有rep exposure,这些工作的意义是什么?你是否愿意在以后编程中坚持这么做?
答:
这些工作能够大大保证我们的代码正确性。比如,时刻注意ADT是否rep exposure,能够确保我们的rep不会被他人修改,进而保证我们代码正确性。其次,编写spec也保证了客户端与类实现者二者直接分离,进而使得分工合作成为可能。
我愿意以后在编程中坚持这么做,因为这样可以提高我的代码质量。

(7) 关于本实验的工作量、难度、deadline。
答:
我认为实验的工作量、难度适中,deadline也设置地恰好,使得我们能够有一定的压力,同时能够是我们高质量地完成编程任务。

(8) 《软件构造》课程进展到目前,你对该课程有何体会和建议?
答:
通过软件构造这门课,我的编程更加规范了,进而使得我编程的代码正确性得到了提高。这门课为我提供了很多编写高质量代码的方法论,因此,我觉得这门课非常有用。
我建议可以在课上讲解一些习题,进而增加我们对于知识的理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值