zoukankan      html  css  js  c++  java
  • 代码重构简介

    .重构原则

    1.重构的定义

    重构(名词):对软件内部结构的一种调整,目的是在不改变"软件之可察行为"前提下,提高其可理解性,降低其修改成本.

    重构(动词):使用一系列重构准则(手法),在不改变"软件之可察行为"前提下,调整其结构.

    两种定义都强调是在不改变"软件的外部行为"前提下,不改变"软件之可察行为"就是说让修改不影响外部使用程序(程序员),在个外部来看,程序的行为和结果没有任何的变化.重构只是对程序内部结构进行调整,让代码更加容易理解,然后更容易维护.

    2.重构的好处

    能改进软件设计

    使软件更容易被理解

    能帮你找到bug

    提高软件的开发速度

     

    3.什么时候进行重构

    三次法则:事不过三,三则重构.意思是说,一件事情,第一次只管去做,第二次做类似的事情会产生反感,但无论如何还是做了,第三次再做类似的事情,你就应该重构.

    在添加新功能时进行重构.

    在修改bug时进行重构

    在代码复审时进行重构.

    4.为什么重构有用

    难以修改的程序具有以下特征:

    难以阅读的程序,难以修改

    逻辑重复的程序,难以修改

    添加新行为时需要修改现有的代码,难以修改

    带复杂条件逻辑的程序,难以修改

    好的程序应该是:

    容易阅读

    所有逻辑都只在惟一地点指定

    新的改动不会危及现有的行为

    尽可能简单的表达条件逻辑

     

    5.间接层和重构

    间接层的存在的价值:

    允许逻辑共享

    分开解释意图和实现

    将变化加以隔离

    将条伯逻辑加以编码

    但是过多的间接层会导致代码的层次太深,使代码难以阅读.因些要权衡加入间接层的利弊.

    6.重构的难题

    关系数据库与面向对象编程的问题:在对象模型和数据库模型之间插入一个分隔层,这就可以隔离两个模型各自的变化.升级某一模型时无需同时升级上述的分隔层即可.这样的分隔层会增加系统复杂度.但是能增加灵活度.

    修改接口的问题:修改已发布的接口,因为已发布的接口会供外部人员(其它公司)使用,因此,修改接口会导致引用接口的其它程序不修改程序就无法运行.修改接口的最好的办法是增加一个新的接口,让旧接口调用新接口.这样原来的程序就不用修改了.对于接口的另一个建议是心尽量不要发布接口.

    7.什么时候不进行重构

    现有的程序无法运行,此时应该是重写程序,而不是重构

    程序到了最后的交付期限

     

    8.重构与设计

    重构与设计是互补的,程序应该是先设计,而在开始编码后,设计上的不足可以用重构来弥补.设计应该是适度的设计,而不必过度的设计.如果能很容易的通过重构来适应需求的变化,那么就不必过度的设计,当需求改变时再重构代码.

    9.重构与性能

    提高性能的三种方法:

    时间预算法:在设计时就对程序花费的时间进行预算,通常用于性能要求极高的实时系统.普通的企业应用程序一般对性能要求不高.只要不太慢就可以了.

    持续关注法:要求程序员在任何时间都要设法保持系统的高性能.这个方法有个缺陷,就是大部分的程序90%的优化工作都是白费劲,这样会浪费大量的时间.

    良好的分解方式:这个方式是在开发程序阶段不对性能投以任何关注,直到进入性能优化阶段,再分析程序中性能差的程序,然后对这些程序进分解,查出性能差的程序,进行优化.

     

    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1346264

  • 相关阅读:
    HDU 6071
    HDU 6073
    HDU 2124 Repair the Wall(贪心)
    HDU 2037 今年暑假不AC(贪心)
    HDU 1257 最少拦截系统(贪心)
    HDU 1789 Doing Homework again(贪心)
    HDU 1009 FatMouse' Trade(贪心)
    HDU 2216 Game III(BFS)
    HDU 1509 Windows Message Queue(队列)
    HDU 1081 To The Max(动态规划)
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/666732.html
Copyright © 2011-2022 走看看