软件构造课程总结

前言:经过一学期的学习,课程落下帷幕,虽然这个过程很累很辛苦,但真正走过来会发现我真的收获了很多,感谢老师一学期的辛苦讲解!

1.在我看来,我的一大收获就是学会如何去衡量自己制作的软件成果,课程介绍了多个软件系统的质量因素,包括外部质量因素如正确性、健壮性以及内部质量因素,这就为我们在构造软件时提供了大方向,总目标,并且可以衡量自己软件成果的好坏以进行修改,这是非常重要的!从此,我知道写软件并不只是把结果跑对这么简单!

2.第二大收获就是加深对于ADT以及ADT设计的理解。ADT中的A即Abstract,这就意味着ADT并不只是数据的简单集合,而是由定义在其上的抽象操作而区分。由此,允许我们以不同的数据集合来定义外部表现相同的ADT,这也就引出了表示与表示独立性的概念,同时为了保证外部表现的一致性,我们通常使用接口来保证这一点。几个概念环环相扣,使得ADT的设计还是蛮有趣的。笔者在初学java时不喜欢使用接口,觉得它就像一个空壳,只是摆在那里看,还要多写出一部分代码;但现在看来,接口概念真的太重要了,表示独立性,复杂继承树的处理等等都离不开接口的使用,它的确像是一个壳,但却将一类东西完全地放在了这个壳的框架之中,更像是一个保护壳,将外部与内部隔离,不可或缺。与此同时,AF,RI,spec的概念也让我明白,编程并不只有代码而已。

3.第三大收获就是OOP中的继承与委托。对象为我们带来了现实世界中各个事物的模拟,而继承则模拟了现实事物中的一种关系,继承可以令我们很好(坏)地复用代码,之所以好是因为如果父类型的绝大多数特性、方法都可以被复用,那继承可以很好地发挥作用;但当我们只想利用其中的一部分时,你就会发现继承为我们带来了很多冗余的东西,而且,多继承是不存在的,只能利用庞大的继承树来实现多个父类的组合,实在太繁琐!这时就该委托登场!委托为我们带来更松耦合的复用,并且可以实现特性的组合,非常适用这种场景!我觉得,继承与委托可以说是贯穿了整个编程过程的核心概念!

4.第四大收获就是针对一些质量指标的设计模式,诸如可处理多状态的state模式,利用继承+委托递归调用实现特性组合的decorator模式,为所有类型实现统一遍历的iterator模式……这些都是前辈们为我们总结出的宝贵财富,而其实这些模式都是接口抽象+继承+委托的巧妙使用,每个设计模式有其适用场景,也有其带来的便利与缺点,在合适的场景选择合适的模式可以为我们软件的构造过程带来极大便利,这一点在实验三中体会很深刻!

5.第五大收获就是使用异常来使我们的程序更加友好。大多数应用场景都需要我们程序在错误情况发生时对用户更加友好,即健壮性良好,此时异常可以派上用场。异常处理可以使我们程序中正常与处理异常情况的代码较为分明,而且异常提供的信息也往往可以帮助我们对错误情况进行认识、修正,是我们程序的好帮手!

6.第六大收获就是在多线程情况下进行线程安全的编程。在此之前,我只关注到多线程带来的高效率,忽视其背后的安全问题,而通过本课程,我学会了限制数据共享、共享不可变类型数据、使用线程安全的数据类型、加锁共四种方法。灵活地选择策略并在程序文档中记录下来,保证多线程竞争条件下的安全,是非常必要的!

总之,学无止境,希望自己能在今后的生涯中不断学习,不断进步,再次感谢老师本学期的辛苦讲解!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值