《修改代码的艺术》读书笔记001——修改软件的原因和存在的问题

一、修改软件的起因及其本质。

修改软件是任何一个开发人员所面对的问题,软件是否容易修改,被修改后的软件是否变得更好,是每一个开发人员都知道必须关注但是在实际开发过程中却往往忽视的问题。有多少人在接手一个新项目时抱怨新项目的遗留代码质量太低?又有多少人愿意或者说有能力去将一个让人崩溃的代码逐步改善?

我在去年,将我所在上一家公司的业务处理程序进行的全面的重写,以达到我想要的容易阅读、容易修改的目的。但是假如面对着一份只能考虑修改,不能考虑重写的,但是混乱不堪的代码,如果将其逐步改善,这是我在刚进入的公司所面对的问题。这也是我准备在未来一段时间里,细致的研究《修改代码的艺术》这本书的目的所在:我希望能够将一个已经非常庞大而且混乱不堪的项目从现状中摆脱出来,让为这个程序做开发的人员对开发感到安心,而不是担忧。

这里从书中列出的软件修改的四个主要起因开始:

  1. 添加新特性。
  2. 修正bug。
  3. 改善设计。
  4. 优化资源使用。

添加新特性和修正bug的含义不难理解,但是有时候因为对需求的理解不同,表面上看上去是修正bug的行为实际对于开发人员来说确实添加一个新特性。关于这一点,这里把这样一种行为划分到添加新特性的范围中,而不认为是修正bug。

改善设计指的是改变程序的结构,令软件更加容易维护,通常也意味着,我们希望改善设计的过程中不应该改变程序的行为。这种不改变程序行为而改善设计的举动称为重构。(书中指出重构背后的理念:如果我们编写测试确保现有行为不变,并在重构的每一步中小心验证其行为的不变性,我们就可以在不改变程序行为的前提下通过重构使其更具维护性)

优化和重构类似,但是目的却不同,重构的目标是程序的结构更容易维护,而优化的目标却是针对程序所使用的资源,比如CPU时间和内存占用等。

一般而言,当对一个系统做修改之后,有三个方面可能会发生改变:结构、功能以及资源占用。为了把上述的bug修改和添加新特性区分出来,我们把功能也分为对旧有功能的修改和新功能。于是综合起来,我们可以得到一个表格:

 添加特性修正bug重构优化
结构改变改变改变——
新功能改变——————
功能——改变————
资源使用——————改变

当然,准确来说,前三种举动也可能会导致资源使用的改变,但是因这三种情况下资源使用的变化往往只是副作用,所以表中还是列为不变。

在这所有的情况里面,有一点是非常重要的:我们对程序的改动相比我们希望保持的程序行为相比,我们希望保持的程序行为要多得多。所以在对程序修改中,如何保证不导致不想改变的东西被改变,是重中之重。

二、修改中存在的问题

对大部分的开发人员来说(起码我遇到过的大部分开发人员),一般并不愿意对软件进行修改。有了新的需求,需要添加新特性;有了bug,需要做修正;这样的修改不得不做。但是改善设计提高维护性,确实大部分人不愿意的。

为什么会这样?当然不是因为开发人员懒,那么多的代码都写了,没道理不愿意为了以后维护方便,多写一些。关键在于,我们都担心只是为了改善结构的修改行为,对系统造成了严重的破坏。

“避免修改”算是我们对于已经跑在线上的程序的一种降低软件问题的策略。“既然跑的好好的,那还是别改了”。如果一个程序永远不用改动,那或许这种策略有一定的可行性。但是,除非对于一个已死的项目,改动总是不可避免的。当团队每次都以看上去最简单的方式将新代码添加到系统中,原有的方法、原有的类就会越来越庞大,修改的难度也会越来越大,最终造成质量不断下滑。

为了减小风险,有三个问题需要注意:

  1. 我们要进行哪些修改?
  2. 我们如何确保正确完成了修改?
  3. 我们如何确保没有破坏任何既有的东西?
以上三个问题是重中之重,也是接下来我希望从《修改代码的艺术》这本书中得到行之有效答案的问题。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本书开创性地深入揭示了重构与模式这两种软件开发关键技术之间的联系,说明了通过重构实现模式改善既有的设计,往往优于在新的设计早期使用模式。本书不仅展示了一种应用模式和重构的创新方法,而且有助于读者结合实战深入理解重构和模式。书中讲述了27种重构方式。.    本书适于面向对象软件开发人员阅读,也可作为高校计算机专业、软件工程专业师生的参考读物。    1994年,《设计模式》为我们带来了常见设计问题的经典解决方案,从而改变了整个面向对象开发的面貌。    1999年,《重构》为我们带来了一种改进代码的高效过程,从而彻底改变了面向对象设计的方式。..    现在,在众所期盼之中,joshua kerievsky的《重构与模式》第一次深入和全面地论述了设计模式的运用与演进式的重构过程,并揭示了两者之间至关重要的联系,又一次革命性地改变了我们的设计方式。    本书阐述了模式导向重构的理论与实践,提出使用模式改善既有设计优于在设计早期使用模式的重要观点。书中包含了27种模式导向重构,每种重构通过一系列较小的重构,安全地在设计中实现、趋向和去除模式。实例均出自真实项目的代码。通过本书,读者不仅能够更好地学习和理解模式和重构,了解两个领域的新进展和业界最新领悟,还能够学到实战中实现模式的多种方式,学会如何在不同情况下进行选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值