代码重构简介

简介:
. 重构原则
1.重构的定义
重构 ( 名词 ): 对软件内部结构的一种调整 , 目的是在不改变 " 软件之可察行为 " 前提下 , 提高其可理解性 , 降低其修改成本 .
重构 ( 动词 ): 使用一系列重构准则 ( 手法 ), 在不改变 " 软件之可察行为 " 前提下 , 调整其结构 .
两种定义都强调是在不改变 " 软件的外部行为 " 前提下 , 不改变 " 软件之可察行为 " 就是说让修改不影响外部使用程序 ( 程序员 ), 在个外部来看 , 程序的行为和结果没有任何的变化 . 重构只是对程序内部结构进行调整 , 让代码更加容易理解 , 然后更容易维护 .
2.重构的好处
能改进软件设计
使软件更容易被理解
能帮你找到 bug
提高软件的开发速度
 
3.什么时候进行重构
三次法则 : 事不过三 , 三则重构 . 意思是说 , 一件事情 , 第一次只管去做 , 第二次做类似的事情会产生反感 , 但无论如何还是做了 , 第三次再做类似的事情 , 你就应该重构 .
在添加新功能时进行重构 .
在修改 bug 时进行重构
在代码复审时进行重构 .
4.为什么重构有用
难以修改的程序具有以下特征 :
难以阅读的程序 , 难以修改
逻辑重复的程序 , 难以修改
添加新行为时需要修改现有的代码 , 难以修改
带复杂条件逻辑的程序 , 难以修改
好的程序应该是 :
容易阅读
所有逻辑都只在惟一地点指定
新的改动不会危及现有的行为
尽可能简单的表达条件逻辑
 
5.间接层和重构
间接层的存在的价值 :
允许逻辑共享
分开解释意图和实现
将变化加以隔离
将条伯逻辑加以编码
但是过多的间接层会导致代码的层次太深 , 使代码难以阅读 . 因些要权衡加入间接层的利弊 .
6.重构的难题
关系数据库与面向对象编程的问题 : 在对象模型和数据库模型之间插入一个分隔层 , 这就可以隔离两个模型各自的变化 . 升级某一模型时无需同时升级上述的分隔层即可 . 这样的分隔层会增加系统复杂度 . 但是能增加灵活度 .
修改接口的问题 : 修改已发布的接口 , 因为已发布的接口会供外部人员 ( 其它公司 ) 使用 , 因此 , 修改接口会导致引用接口的其它程序不修改程序就无法运行 . 修改接口的最好的办法是增加一个新的接口 , 让旧接口调用新接口 . 这样原来的程序就不用修改了 . 对于接口的另一个建议是心尽量不要发布接口 .
7.什么时候不进行重构
现有的程序无法运行 , 此时应该是重写程序 , 而不是重构
程序到了最后的交付期限
 
8.重构与设计
重构与设计是互补的 , 程序应该是先设计 , 而在开始编码后 , 设计上的不足可以用重构来弥补 . 设计应该是适度的设计 , 而不必过度的设计 . 如果能很容易的通过重构来适应需求的变化 , 那么就不必过度的设计 , 当需求改变时再重构代码 .
9.重构与性能
提高性能的三种方法 :
时间预算法 : 在设计时就对程序花费的时间进行预算 , 通常用于性能要求极高的实时系统 . 普通的企业应用程序一般对性能要求不高 . 只要不太慢就可以了 .
持续关注法 : 要求程序员在任何时间都要设法保持系统的高性能 . 这个方法有个缺陷 , 就是大部分的程序 90% 的优化工作都是白费劲 , 这样会浪费大量的时间 .
良好的分解方式 : 这个方式是在开发程序阶段不对性能投以任何关注 , 直到进入性能优化阶段 , 再分析程序中性能差的程序 , 然后对这些程序进分解 , 查出性能差的程序 , 进行优化 .


















本文转自周金桥51CTO博客,原文链接: http://blog.51cto.com/zhoufoxcn/167075  ,如需转载请自行联系原作者

相关文章
|
XML JavaScript 前端开发
【高效编程】编码规范与静态代码检查插件的使用(SonarList都用起来吧)
您好,我是码农飞哥,感谢您阅读本文!如果此文对您有所帮助,请毫不犹豫的一键三连吧,前面几篇文章介绍的都是开发类的插件,这篇文章将介绍一下编码规范和静态代码检查相关的插件。
671 0
【高效编程】编码规范与静态代码检查插件的使用(SonarList都用起来吧)
|
2天前
|
前端开发 JavaScript 开发者
实用技巧:提高前端开发效率的5个方法
提高前端开发效率是每个开发者都追求的目标。本文将介绍5个实用的技巧,帮助前端开发者提升工作效率:使用代码片段加速开发、合理利用浏览器开发者工具、充分利用现有框架和库、使用自动化构建工具、保持学习和不断优化工作流程。
|
15天前
|
IDE 测试技术 持续交付
【专栏】利用Python自动化测试与单元测试框架提升代码质量与效率
【4月更文挑战第27天】本文探讨了Python自动化测试与单元测试框架在提升代码质量与效率中的作用。Selenium、Appium用于Web和移动应用自动化测试,pytest提供强大、易扩展的测试支持。unittest是Python标准的单元测试框架,支持结构化测试用例和丰富的断言。实践中,应制定测试计划,编写高质量测试用例,实行持续集成与测试,并充分利用测试报告。这些工具和策略能有效保障代码质量和提升开发效率。
|
2月前
|
安全 NoSQL 程序员
【年度征文 健壮代码 心得体会】 如何编写健壮的C++代码
【年度征文 健壮代码 心得体会】 如何编写健壮的C++代码
55 0
|
2月前
|
Java
Java开发规范(简洁明了)
Java开发规范(简洁明了)
|
8月前
|
算法 Java 测试技术
提高代码质量的7个实用技巧
在Java开发中,编写高质量的代码是非常重要的。良好的代码质量不仅可以提高程序的可维护性和可读性,还能减少潜在的bug和错误。本文将介绍七个实用技巧,帮助Java开发人员提高代码质量。
350 0
|
自然语言处理 数据管理 Java
WindowsGUI自动化测试框架搭建之需求整理、详细设计和框架设计
WindowsGUI自动化测试框架搭建之需求整理、详细设计和框架设计
169 0
|
设计模式 安全 测试技术
经验总结 | 重构让你的代码更优美和简洁
最近,笔者有幸对高德打车订单Push项目进行了重构,与大家分享一下代码重构相关的工作经验,希望对大家有所启发。
190 1
经验总结 | 重构让你的代码更优美和简洁