• 大话重构读书笔记——进阶篇一


    什么时候重构?

    重构是一种习惯,一种编程习惯。这种习惯让我们迅速由菜鸟转变为大牛,可以编写出高质量、优秀的程序。

    问题的关键就是降低修改成本与风险的方法,而这个方法就是系统重构。

    走出重构的第一步对每一个人来说都是一次心灵的考验,甚至许多人总是徘徊于路口踌躇不前,但一旦跨出去了,它将成为你生命的一部分。

    没有经过重构的,原生态的代码是没办法复用的,当我们发现代码需要复用时,切忌不要使用过去那种简单粗暴的复制黏贴,合理运用重构方法,加之以仔细、认真、即时的测试,就可以保证既有代码的正确,并使整个系统合理地复用起来,以提高系统的可维护性,关键是你有没有这样的意识。

    添加新功能前线重构原系统,其目的有两个:

      1. 软件的设计总是与软件的复杂度有关的,原有的设计师在原有需求不复杂的条件下做出的,但随着新功能的加入,软件复杂度在发生着变化,因此必须调整原有的设计。

      2. 为了提高软件的可维护性与易变更性,添加新功能应遵循OCP原则。

    系统重构是我们维护处高质量遗留系统的有效工具。

    在紧急变更任务中,时间就是金钱,我们要用最省时省力的方法解决问题,这里的差别就是怎样去重构?——做完整的设计, 但只做重构中最紧急的部分。

    测试驱动开发

    测试驱动开发是极限编程的一个重要组成部分,它的核心思想非常简单,就是先写测试用例再编码。

    后测试开发即先进行完备的软件设计,然后进行完备的软件编码,当几乎所有程序都设计开发完成后才开始相应的测试。这样的模式,从设计到测试的时间比较长,造成运行调试与测试的难度大,发现问题后的问题定位及修复的难度大,因而延长了软件开发的周期。

    标准的测试驱动开发步骤:

      1. 编写测试程序,此时的测试程序必然无法编译或者无法测试通过

      2. 编写要实现的程序代码,使测试程序得以通过

      3. 在测试程序的保护下重构代码,使其得到优化

      4. 重复以上过程,使开发工作不断进行下去

    有了测试程序的保护,我们可以大胆地尝试重构,使系统的代码质量得到提高。

    当我们的项目开始进行新一轮开发时,首先对涉及的、需要修改的程序建立测试程序。当原有功能的测试程序建立起来并测试通过以后,我们开始添加新的代码。在添加新的代码前,按照测试驱动开发流程,先在原有测试程序的基础上添加新的测试用例。新的测试用例将体现系统的新功能,但此时的测试程序必然报错或无法测试通过,随后我们开始实现新功能,此时的程序可能不是最优的,只是能够保证测试程序的通过。接着我们开始思考并尝试重构来优化我们的设计。如此往复,直到完成所有开发。

    分析既有代码的程序结构,用草图形式绘制出静态类图。在类图中绘制出相关的接口与类,主要的属性和方法,以及它们之间的关系。

    全面的升级任务

    演进式设计的核心思想是快速反馈:快速设计,快速开发出可运行的程序,快速测试,快速验证。演进式设计最大的问题是缺乏一种长远的规划。每次演进仅仅考虑此次功能的实现,最后设计成什么样子没有一个方向性的规划。

    恰如其分的规划,就是对遗留系统目前的状况,面临的风险,可采用的措施进行一次恰如其分的数据收集与分析,有针对性地制定改造范围、执行阶段与打到的目标。

    风险驱动设计时以风险的分析与识别作为核心,用最小的代价去完成最急迫的风险,从而达到恰如其分的设计开发的一种软件设计方法。该方法适用于以系统改造为目的的研发项目。

    三类风险:

      1. 我们缺乏对该系统相关知识的掌握,程序修改与维护变成一种冒险。

      2. 维护成本越来越高,任何的变更都变得伤筋动骨。

      3. 最后一个,也是最可能促使企业痛下决心进行系统改造的原因,那就是旧技术已经不能满足用户新的需求,我们必须要进行新技术的转型。

    识别风险才能让我们更加有效地去规避风险,从而更加有针对性地进行系统改造,避免系统重构工作特别容易出现的”想到哪里就做到哪里“的弊病。

    作者:Ribbon 出处: http://www.cnblogs.com/Ribbon/ 本文版权归作者和博客园共有,欢迎转载。未经作者同意下,必须在文章页面明显标出原文链接及作者,否则保留追究法律责任的权利。 如果您认为这篇文章还不错或者有所收获,可以点击右下角的【推荐】按钮,因为你的支持是我继续写作,分享的最大动力!
  • 相关阅读:
    DCR挖矿成本¥355.92,市价¥346.24——五大币种挖矿成本分析 2018-08-7
    智者见智——区块链3.0与未来
    梭哈10万入场,拿住不放,3年后收益过十亿,币圈传奇—大空翼
    从路人甲到叱咤币圈的神话:“打死也不卖币”的宝二爷
    小白眼里的区块链和币圈 —— 持币待涨的故事
    区块链如何赋能网络互助行业?来自众托帮+区块链的应用、车车助+纷享车链AutoChain应用
    中国青年网记者-阿里巴巴王坚:互联网已成为世界发展的基础设施
    读者咩叭:畅谈经济未来
    中青网财经:请一位心理学博士当CTO 只有马云敢这么做
    云科技时代:阿里云创造者写了《在线》,这是一本怎样的书?
  • 原文地址:https://www.cnblogs.com/Ribbon/p/4398933.html
Copyright © 2020-2023  润新知