阅读《反模式》一书后感

来源:互联网 发布:网络旅游平台 编辑:程序博客网 时间:2024/04/29 05:17

        反模式,是什么?估计很多人第一眼看到这个词会和我一样感到奇怪和困惑。这种困惑在我看完此书的简要介绍后变的更浓了。因为我已经被里面纷繁复杂的名词和解释搞晕掉了。本来我都有些想放弃这本书的阅读了,不过想想领导说看完书后要给大家讲讲收获的,我又在借阅单上写了自己的名字。如果什么都没有得到就不看了,到时候我如何和大家交流读后感呢?我只能硬着头皮往后看。

        当这本书,我开始看具体的反模式后才开始有点感觉了。反模式,我理解其实就是我们在软件设计与构建(可参考《代码大全》一书对软件构建的详细说明,我会在另一篇文章中介绍)过程中需要注意避免出现的一种思路,做法。这段时间,我们作为程序员正风行研究《设计模式》。如果说“四人帮”推荐和总结的24中设计模式是我们值得在实践中使用的,那么反模式就是我们要尽力在实践中避免使用的。这些模式包括了设计架构方面的,编码方面的,软件工程管理方面的。其中我体会最深的是编码方面的复制粘贴模式(Copy and Paste)。

        刚开始看到这个模式的时候,我很吃惊。因为,我平时编码活动中复制粘贴代码几乎占了70%,而且我相信几乎有80%的编码人员都和我一样对Ctrl+C和Ctrl+V应用的炉火纯青。而且绝大部分人在相当长的一段时间对此技巧乐此不疲。至少我在看到这个反模式之前是这样。不过,书中对这个反模式的来源及危害和重构方法做了详细讲述。复制粘贴产生在某种程度上说,是代码复用的一种表现。有人会说,代码复用不是我们所应该提倡的吗?是一种提高软件生产效率的表现。不过遗憾的是,复制粘贴更多体现了面向过程设计,甚至也是一种不好的面向过程设计。如果真的想体现出代码复用原则,面向过程设计时应该将复制粘贴的部分子程序化(可参考《代码大全》对子程序化的详细说明)。面向对象设计时,应该考虑用提供相关服务的类来处理。当需要这部分功能时,用实例化的对象来实现。这种处理方式才是代码复用的真正实现。有人可能会说,因为复制粘贴代码时,很多时候都是做了部分功能修改的,不是完全一样的复制。而这种情况恰恰说明了子程序化和抽象合适类的重要性。只有良好的设计,才是程序稳定性、可靠性、可扩展性的前提条件。说了复制粘贴需要避免的来源和好处,下面简要说明我对使用复制粘贴缺陷的理解。在复制粘贴过程中,可能会因为时间或着其他原因,导致原有的BUG也被复制到新的地方;或者在针对新情况修改时引入原有代码没有考虑到的缺陷;前一种情况如果需要修复的时候,则需要搜索所有关键信息,然后一一修改。后一种情况,同样需要检查这段代码每次使用的地方,看是否会有引入的新缺陷。这样,对于代码的维护,以及后期的重构(可参考《重构--代码修改艺术》一书)的成本而言,非常之大。所以编码活动中,如果出现2次以上复制粘贴动作的时候,记得要提醒自己,是否需要做一个子程序或抽象出一个类来。

        其他还有很多模式也是我们在设计、编码过程中需要注意的。还有一些是需要软件活动中项目经理和软件经理注意的反模式。再此我就不介绍了。现在我正在看《代码大全》,下次再记录一下自己的简单体会。

原创粉丝点击