代码重构简介

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


















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

相关文章
|
网络协议 Linux 虚拟化
桥接方式: vmware虚拟机安装的centos7连接外网教程
桥接方式: vmware虚拟机安装的centos7连接外网教程
2040 0
桥接方式: vmware虚拟机安装的centos7连接外网教程
|
设计模式 Java 数据库
Java设计模式七大原则-依赖倒转原则
Java设计模式七大原则-依赖倒转原则
237 0
|
缓存 Linux 开发工具
CentOS 7- 配置阿里镜像源
阿里镜像官方地址http://mirrors.aliyun.com/ 1、点击官方提供的相应系统的帮助 :2、查看不同版本的系统操作: 下载源1、安装wget yum install -y wget2、下载CentOS 7的repo文件wget -O /etc/yum.
270044 0
|
4月前
|
安全 Java 应用服务中间件
实现权限管理的技术
本文介绍了权限管理的常见技术选型,对比了Apache Shiro、Spring Security及自定义ACL的优缺点。Shiro轻量易用但安全性较弱;Spring Security功能强大但配置复杂;自定义ACL灵活但维护成本高,适合特定项目需求。
|
安全 Linux 网络安全
Centos7安装Docker
安装docker Centos7安装Docker 1.卸载Docker 2.安装docker 3.启动Docker CentOS7安装DockerCompose 1.下载 2.修改文件权限 3.Base自动补全命令:
6613 0
|
存储 域名解析 Kubernetes
从零开始,在 Kubernetes 上玩转 Erda(二)
本章节介绍 Erda 的部署以及配置细节
2092 0
从零开始,在 Kubernetes 上玩转 Erda(二)
|
NoSQL 前端开发 Redis
Windows 下安装和配置 Redis (图文教程)
Windows 下安装和配置 Redis (图文教程)
|
安全 网络安全 Windows
你还在使用xshell绿色破解版?
你还在使用xshell绿色破解版?
12542 1
|
Linux Docker 容器
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
本篇博客重在讲解Centos安装docker,经博主多次在不同服务器上测试,极其的稳定,尤其是阿里的服务器,一路复制命令畅通无阻。
22342 5
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
|
缓存 Linux
CentOS7系统配置国内yum源和epel源
1.首先进入/etc/yum.repos.d/目录下,新建一个repo_bak目录,用于保存系统中原来的repo文件 [root@bogon ~]# cd /etc/yum.repos.d/ [root@bogon yum.
12614 57