李锋镝的博客

  • 首页
  • 时间轴
  • 说说
  • 每日心情
  • Now
  • 系列文章
  • 论坛
  • 左邻右舍
    • 左邻右舍
    • 博友圈
  • 留言
    • 留言
    • 走心评论
  • 关于
    • 关于本站
    • 网站地图
    • 网站统计
    • 另一个网站
    • 我的导航站
    • 赞助
  • 🚇开往
!Destiny
惟坚韧者始能遂其志
  1. 首页
  2. 原创
  3. 正文

何谓重构?为何重构?

2019年6月24日 约 917 字4 分钟 190 0 0
本文最后更新于 2019年6月26日,距今已 2642 天,其中的信息可能已经发生变化,请注意甄别。

什么是重构?

所谓重构是这样一个过程:在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构。
——引用自《重构:改善既有的代码设计》

重构(名词)

对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。

重构(动词)

使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。

为什么需要重构?

项目经过不断的迭代、修改、升级...基于原先的设计所得到的系统,整体结构逐渐衰弱,代码质量不断降低,代码的可读性、弹性越来越差,冗余代码越来越多,导致新的需求只能胡乱拼凑上去...再加上公司内部的人员调整,陈年代码无人能懂更不敢随意优化(稍不注意就会导致意想不到的灾难发生)。
这样导致的结果就是代码质量、项目性能慢慢下降,程序的设计逐渐腐败变质,本来严谨的编码工作逐渐变成胡乱拼凑的随性行为(只要完成了现有功能,不影响老的功能就万事大吉了!——这应该是大部分在陈年代码的基础上编程的工程师的真是想法)。

通过重构我们能得到什么?

1.重构能够改进软件设计

代码结构的流失是累积性的。越难看出代码的设计意图,就越难保护其中的设计,于是该设计就腐败的越快。而经常性的重构可以帮助代码维持自己的形态和结构。

完成同样一件事,设计不良的程序往往需要更改代码,这通常是因为相同的代码在不同的地方做着同样的事。如果消除重复代码,你就可以确定所有的事物、行为在代码中只表述一次,这正是优秀设计的根本。

2.重构使软件更容易理解

重构会使代码渐趋简洁,越简洁就越容易理解,越容易理解就越容易修改...

3.重构能够找到代码中隐藏的bug

对代码进行重构,可以更深入的理解代码,搞清楚程序的结构,于是bug就被揪出来了。

重构能够帮助程序员更有效的写出更强健的代码。

4.重构提高编程速度

良好的设计是开发的根本,拥有良好的设计才可能做到快速开发。如果没有良好的设计,或许短时间内进展迅速,但是恶劣的设计很快就让你的速度慢下来。你会花费大量的时间进行调试,添加新功能难度越来越高,修改时间越来越长,bug越藏越深,为了解决问题于是一个又一个补丁出现...哦~真是一个恶性循环。

重构可以帮助你更快的开发软件,因为它阻止系统腐败变质,它甚至还可以提高设计质量。

何时重构:见何时重构?

 

参考链接

1
  1. 1重构:改善既有的代码设计baike.baidu.com
除非注明,否则均为李锋镝的博客原创文章,转载必须以链接形式标明本文链接

本文链接:https://www.lifengdi.com/article/275

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
分享到

何谓重构?为何重构?

也可使用浏览器菜单中的「分享」功能

微信扫一扫分享

标签: JAVA 重构
最后更新:2019年6月26日

岁月同一天 9 月 20 日

回望过去的今天,你在写什么

  • 7 年前 2019年9月20日
    SpringBoot整合Elasticsearch详细步骤以及代码示例(附源码)

    准备工作 环境准备 JAVA版本 java version "1.8.0_121" Java(TM) SE Runtim…

相关文章
  • JAVA线程池简析(JDK1.6)2019年6月13日
  • Spring中@NotNull、@NotBlank、@NotEmpty的区别2019年7月2日
  • Java触发GC的方式2025年4月10日
  • JAVA关键字之volatile关键字说明2019年10月11日
  • 如何通过命令查看Java应用内存中对象数量2026年8月3日

李锋镝

既然选择了远方,便只顾风雨兼程。

打赏 点赞
< 上一篇
下一篇 >
1234567891112131415161718192021222324252627282930313233343536373839404142434446474849505152535455575859606162636465666769727476777879808182858687909293949596979899
取消回复
…

文章评论

还没有评论,快来抢沙发吧~

当你凝视深渊时,深渊也在凝视你。

听点儿音乐吧 朋友~
文章目录
最新 热点 随机
最新 热点 随机
让WordPress静态化之Rocket‑Nginx WordPress下一代默认主题Ipsum预览 C++之父重磅发声:AI编程正在毁掉一代程序员 支撑全网40%网站的WordPress正在重新拥抱PHP生态 Kratos-plus v1.1.24版本更新说明 关于主题加载速度优化的一点儿小演进
关于主题加载速度优化的一点儿小演进给主题增加了Now、每日心情、年度回顾、岁月同一天、随机漫步等功能WordPress缓存插件WP Fastest Cache、WP Rocket 、FlyingPress对比关于使用AI的一些思考Kratos+ v1.1.16版本更新说明AI时代,个人技术博客的出路在哪里?
Java整数运算 ElasticSearch添加mapping 吐槽下Google浏览器~ 网易云什么时候能有杰伦的歌…… 你们公司的 QPS 是怎么统计出来的?这 5 种常见方法我踩过一半的坑 Spring HTTP客户端演进:从RestTemplate到WebClient与RestClient
最近评论
李锋镝 发布于 5 小时前(09月20日) 静态博客我之前也用过,但是感觉不是很方便,后来就一直用的WordPress
Sheep5 发布于 5 小时前(09月20日) 我直接用静态博客,天然有速度优势。
不凡 发布于 7 小时前(09月20日) 主要是wordpress插件丰富,需要什么功能插件,插件市场应有尽有,typecho是性能更好、更轻...
李锋镝 发布于 9 小时前(09月20日) 忒极简了,而且这个布局我也搞不懂
李锋镝 发布于 9 小时前(09月20日) 哈哈哈~自定义的功能都是符合自己需求的
标签聚合
数据库 AI Redis Claude JAVA 分布式 日常 WordPress AI编程 MQ Spring SQL K8s IDEA 架构 SpringBoot MySQL 多线程 JVM ElasticSearch
友情链接
  • 知向前端
  • 彬红茶日记
  • lijie blog
  • 临窗旋墨
  • 九仞之行
  • 懋和道人
  • 志文工作室
  • 搬砖日记
  • Serendipity
  • 韩情脉脉
  • 林羽凡
  • 瓦匠个人小站
  • 皮皮社
  • 老张博客
  • 若梦博客
  • sssr7844的博客
  • Honesty
  • 蜗牛工作室
  • 哥斯拉
  • 韩小韩博客

COPYRIGHT © 2016-2026 lifengdi.com. ALL RIGHTS RESERVED.

lifengdi.com

Domain age badge for lifengdi.com

Theme Kratos-plus By Dylan Li

津ICP备2024022503号-3

京公网安备11011502039375号