李锋镝的博客

  • 首页
  • 时间轴
  • 说说
  • 读书观影
  • 系列
  • AI工具集
  • 论坛
  • 友圈
    • 友链
    • 朋友圈
    • 游客中心
  • 留言
    • 留言
    • 走心评论
  • 关于
    • 关于本站
    • Now
    • 每日心情
    • 网站地图
    • 网站统计
    • 赞助
  • 星球穿梭
  • 🚇开往
静亦定 动亦定
惟坚韧者始能遂其志
  1. 首页
  2. 原创
  3. 正文

何谓重构?为何重构?

2019年6月24日 272 0 0
本文最后更新于 2019年6月26日,距今已 2688 天,其中的信息可能已经发生变化,请注意甄别。

什么是重构?

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

重构(名词)

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

重构(动词)

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

为什么需要重构?

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

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

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

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

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

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

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

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

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

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

4.重构提高编程速度

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

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

何时重构:见何时重构?

 

参考链接

1
  1. 1重构:改善既有的代码设计baike.baidu.com
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
分享到

何谓重构?为何重构?

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

微信扫一扫分享

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

岁月同一天 11 月 5 日

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

  • AI
    1 年前 2025年11月5日
    从入门到精通:Qwen3-Coder 终端全攻略(环境搭建、高阶用法、实战案例详解)

    阿里开源的 Qwen3-Coder 凭借 480B 参数规模、MoE 架构设计和 256K 超长上下文,在编程任务中表现…

  • AI
    1 年前 2025年11月5日
    从入门到精通:Ollama 本地大模型全攻略(含 UI 界面、多语言调用、进阶优化)

    在大模型应用爆发的时代,本地部署大模型已成为企业和开发者的核心需求——既避免数据隐私泄露,又无需承担高昂的 API 调用…

  • 后端
    1 年前 2025年11月5日
    SpringBoot日志链路追踪深度实战:基于 TraceId 打通全链路日志

    在复杂业务系统中,一个用户请求可能会贯穿多个服务、调用数十个方法、涉及多线程异步处理——排查问题时,日志被不同请求穿插得…

  • 7 年前 2019年11月5日
    Elasticsearch常用查询

    常用的 match_all查询 match_all查询简单的匹配所有文档。在没有指定查询方式时,它是默认的查询: { "…

相关文章
  • SpringBoot基于redis的分布式锁的实现(源码)2019年7月20日
  • JVM安全点介绍2021年8月16日
  • Maven发布本地项目的jar包和源码到私有仓库(maven-source-plugin的简单使用)2020年5月25日
  • 内存屏障浅析2021年11月18日
  • Java数组类型2022年7月21日

李锋镝

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

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

文章评论

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

苟利国家生死以,岂因祸福避趋之。

听点儿音乐吧 朋友~
文章目录
最新 热点 随机
最新 热点 随机
给服务器加了WAF 又一个逆天改命的人:小小徐 AI的生成能力等于生产力吗? NGINX严重漏洞(CVE-2026-15176、CVE-2026-93479、CVE-2026-97205) Kratos-plus v1.1.27更新说明 php2shell远程执行漏洞修复(CVE-2026-109618 和 CVE-2026-109619)
给主题增加了游客中心功能心气没了,干什么都不得劲我觉得是时候公布我的导航网站了游本昌去世关于主题加载速度优化的一点儿小演进给主题增加了Now、每日心情、年度回顾、岁月同一天、随机漫步等功能
结合Apollo配置中心实现日志级别动态配置 纪念中国人民抗日战争胜利76周年 增加了两套复古皮肤-牛皮纸、千禧网页 AI原生数据库新标杆:seekdb深度解析,轻量架构与混合搜索的双重革命 醒醒~补个税了 我的第一个WordPress插件:Dylan Custom Plugin上线了
最近评论
swift 发布于 9 小时前(11月04日) 站长你好,我是SitesLink的一名研发,看到您的个人博客,深有感触,诚邀您加入:https://...
秋风于渭水 发布于 10 小时前(11月04日) 宝塔那个防火墙就是个摆设+隐私窃取器,平时还会主动静默把用户文件传给宝塔
李锋镝 发布于 11 小时前(11月04日) 是的 哈哈哈
南香香 发布于 14 小时前(11月04日) 刷到这事时以为是段子,后来看热搜是真办成了。这届网友挺暖的。
李锋镝 发布于 3 天前(11月02日) 良田是啥?
标签聚合
IDEA SQL Claude JAVA 日常 Theme 数据库 多线程 分布式 K8s SpringBoot WordPress 架构 JVM Spring AI MySQL Redis ElasticSearch AI编程
友情链接
  • 韩情脉脉
  • 哥斯拉
  • 林羽凡
  • 彬红茶日记
  • 知向前端
  • Mr.Sun的博客
  • 搬砖日记
  • sssr7844的博客
  • 韩小韩博客
  • 皮皮社
  • 瓦匠个人小站
  • 懋和道人
  • lijie blog
  • 刘永博客
  • Honesty
  • 九仞之行
  • Serendipity
  • 老张博客
  • 志文工作室

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号