《重构的时机和方法》——让你的代码更健壮、更易维护

news/2024/4/30 4:24:04/文章来源:https://blog.csdn.net/qq_40915439/article/details/131934367
  • 👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,CSDN博客专家,阿里云专家博主
  • 📕系列专栏:Java设计模式、Spring源码系列、Netty源码系列、Kafka源码系列、JUC源码系列、duubo源码系列
  • 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦
  • 🍂博主正在努力完成2023计划中:以梦为马,扬帆起航,2023追梦人
  • 📝联系方式:hls1793929520,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬👀

文章目录

  • 一、引言
  • 二、专家评价
    • 周正中,阿里云数据库专家
    • 张树杰,华为数据库技术专家
    • 徐前进,腾讯数据湖研发高级工程师
    • 陆公瑜,前Greenplum全球产品总监/Greenplum中文社区创始人
    • 梁桂钊,《高可用可伸缩微服务架构》和《Spring 5设计模式》联合作者
  • 三、书籍内容
  • 四、书籍目录
  • 五、书籍购买
  • 六、总结
  • 七、送书规则

一、引言

作为一名软件开发人员,你一定知道代码重构的重要性。

重构是指在不改变软件外部行为的情况下,改进软件内部结构的过程。

重构可以使代码更健壮、更易维护,并提高软件的质量和可维护性。

而《重构的时机和方法》这本书,则是为了帮助你更好地掌握重构的技巧和方法。

《重构的时机和方法》一书的作者是Martin Fowler,他是软件开发领域的知名专家,也是重构技术的创始人之一。

这本书从实践的角度出发,讲解了重构的基本概念、技术和方法,包括如何识别代码中的坏味道、如何进行重构、如何测试重构后的代码等。

本书还提供了大量的实例和案例,让你可以更好地理解和应用重构技术。

二、专家评价

我们一起来看看各专家对此书的评价

周正中,阿里云数据库专家

程序是慢慢长大的,没有哪个程序会说自己的这套代码就是它的终态;程序需要一代又一代的程序员来完成其进化,满足业务的需要。

在进化过程中,里构定必个可少工作,是跨时间线、跨空间的协作,重构方法论非常重要。

本书的出版恰逢其时,相信可以帮助更多程序员提升跨时空协作的能力,译者本人也奉行终身编程的思想,非常值得一读。

张树杰,华为数据库技术专家

重构是一门抽象的艺术,想要真正理解和运用这些教条般的重构选择和设计模式并非易事,往往需要一个软件工程师进行多年的经验积累才能小有所得。

本书的出版为我们提供了便捷之路,可以让我们站在巨人的肩膀上,拨开重构的迷雾,欣赏到更美的风景。

徐前进,腾讯数据湖研发高级工程师

这是一本面向程序员的代码设计晋级书籍,作者深入浅出地解析了重构是什么、什么时候要重构和如何重构。

书中有大量的示例,一步步演示大师构建软件的关键历程,把成功的软件开发思维分享给所有的读者。

陆公瑜,前Greenplum全球产品总监/Greenplum中文社区创始人

好代码、坏代码和技术债都是影响代码质量的主要因素,本书主要通过代码对比的方法讨论如何写出优雅的代码和如何把握重构时机。

书中处处体现了写代码的哲学观,凝聚了软件开发社区专家多年摸索而获得的宝贵经验。

我相信,程序员通过阅读本书,能够提升能力,节省宝贵时间。

梁桂钊,《高可用可伸缩微服务架构》和《Spring 5设计模式》联合作者

重构是软件工程师的基本功。

在软件工程中,我们需要关注软件的可持续性,也就是代码在其生命周期内如何去适应需求的变化。

如果不断演进的软件积累了许多技术债务,我们不要搁置“破窗”,要思考如何在必要的时机重构代码,以及如何运用合适的重构方法解决这些问题。

本书条理清晰、由浅入深,无论是刚接触编程的入门读者,还是深耕多年的进阶读者,这本书都值得你深度品读。

从这不难看出,此书获得各大厂专家的青睐。

三、书籍内容

本书由风格不同的两部分组成。

第Ⅰ部分为重构奠定了坚实的基础,并且针对个人学习。

相比全面性,我更关注学习的容易性。

这部分适用于尚未有着坚实的重构基础的人,例如学生和初级或自学的开发人员。

如果你查看本书的源代码并认为“这似乎很容易改进”,那么可以直接跳过第Ⅰ部分。

在第Ⅱ部分中,我更多地关注上下文和团队的学习。

我选择了自认为在现实世界中最有价值的软件开发课程。

一些主题主要是理论性的,例如“与编译器协作”和“遵循代码中的结构”;还有一些主题主要是实用性的,例如“喜欢删除代码”和“让坏代码看起来很糟糕”。

因此这部分的应用范围更广,即使是有经验的开发人员也应该学习这些章节。

第Ⅰ部分的章节都使用一个单一的总体示例,因此这些章节紧密地联系在一起,应该逐一阅读。

但是在第Ⅱ部分中,除了一些相互参考,这些章节内容基本上是独立存在的。

如果没有时间阅读整本书,你可以根据自己的需要选择第Ⅱ部分中最感兴趣的主题单独阅读。

四、书籍目录

第Ⅰ部分 通过重构电脑游戏来学习第1章 重构第2章 重构的内部原理第3章 拆分长函数第4章 让类型代码发挥作用第5章 将类似的代码融合在一起第6章 保护数据第Ⅱ部分 学以致用第7章 与编译器协作第8章 远离注释第9章 喜欢删除代码第10章 永远不要害怕添加代码第11章 遵循代码中的结构第12章 避免优化和通用性

五、书籍购买

京东网上商城:《重构的时机和方法》

https://union-click.jd.com/jdc?e=&p=JF8BAPoJK1olXwQGUFlUCksfCl8IHloRXAcAU24ZVxNJXF9RXh5UHw0cSgYYXBcIWDoXSQVJQwYHVVpcCUkQHDZNRwYlC1ZwU1oqT1V3C2hzbSd8D3NdLloPXkcbM2oIGlsUVQ4KUF1tC0oVAWgPG1kWVDYyVF9tWiXPtdnQvuoJiayNgdbKOEonA2gBE1MXXgcFUFlaDXsXC2s4Rh9JBVkBUm5tOEgnM18IK1glA2gDB1hfCRhDUQFVQQlAFAQEVDBYCUgUAW4LHGsXXAcAVm5tOD1sSi0PexttIHZ5MDk9azAWXCkOQSVVXGgAJjkmdi91eBd1RARjJgRCDght

在这里插入图片描述

六、总结

对于你以前可能听说过或读到过的那种枯燥简单的重构,本书不会过多介绍,而是讨论真正的重构:在实际项目中重构、在遗留系统中重构,在我们几乎每天都面对的各种环境中进行重构。

此外,本书不会让你因为没有进行自动化测试而感到内疚。

作者意识到大多数继承的系统会随着时间的推移而发展演变,我们没有那么幸运都拥有这样的测试套件。

本书列出了一组简单的规则,你可以遵循这些规则来切实地重构复杂、散乱、混乱、未经测试的系统。

通过学习并遵循这些规则,你也可以真正提高你所维护的系统的质量。

不要误会我的意思,本书不是灵丹妙药。

重构破旧粗糙的、未经测试的代码绝非易事。

但是,通过应用本书中的规则和示例,对于如何解决困扰你已久的系统混乱问题,你将获得新思路。

因此,我建议你仔细阅读本书,研究书中的示例,认真思考作者提出的抽象概念和意图。

另外,还要获取作者提供的代码库并与作者一起重构,从头到尾跟随作者的重构之旅。

七、送书规则

❤️❤️❤️ 送书啦 ❤️❤️❤️

感兴趣的可以私信我参加~

朋友圈第8、88、188个好友点赞,3位幸运读者各赠送一本实体书《重构的时机和方法》

PS:如果没有抽到书籍的想自己购买,我还特别为大家争取了粉丝福利,根据评论区链接购买图书返利19.99元,只有2个名额哦,赶快行动吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_337102.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FFmpeg aresample_swr_opts的解析

ffmpeg option的解析 aresample_swr_opts是AVFilterGraph中的option。 static const AVOption filtergraph_options[] {{ "thread_type", "Allowed thread types", OFFSET(thread_type), AV_OPT_TYPE_FLAGS,{ .i64 AVFILTER_THREAD_SLICE }, 0, INT_MA…

【学会动态规划】打家劫舍 II(12)

目录 动态规划怎么学? 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后: 动态规划怎么学? 学习一个算法没有捷径,更何况是学习动态规划, 跟我…

P3818 小A和uim之大逃离 II

题目 思路 一眼bfs 好像需要记录的东西有点多啊&#xff0c;那就交给数组吧 s t i j 0 / 1 st_{ij0/1} stij0/1​表示用/没用特殊步走到(i,j)的步数&#xff0c;然后套bfs模板即可 代码 #include<bits/stdc.h> using namespace std; const int N1005; int n,m,d,r,st…

使用Kmeans算法完成聚类任务

聚类任务 聚类任务是一种无监督学习任务&#xff0c;其目的是将一组数据点划分成若干个类别或簇&#xff0c;使得同一个簇内的数据点之间的相似度尽可能高&#xff0c;而不同簇之间的相似度尽可能低。聚类算法可以帮助我们发现数据中的内在结构和模式&#xff0c;发现异常点和离…

Pycharm debug程序,跳转至指定循环条件/循环次数

在断点出右键&#xff0c;然后设置条件 示例 for i in range(1,100):a i 1b i 2print(a, b, i) 注意&#xff1a; 1、你应该debug断点在循环后的位置而不是循环上的位置&#xff0c;然后你就可以设置你的条件进入到指定的循环上了 2、设置条件&#xff0c;要使用等于符号…

系统集成|第七章(笔记)

目录 第七章 范围管理7.1 项目范围管理概念7.2 主要过程7.2.1 规划范围管理7.2.2 收集需求7.2.3 定义范围7.2.4 创建工作分解结构 - WBS7.2.5 范围确认7.2.6 范围控制 上篇&#xff1a;第六章、整体管理 第七章 范围管理 7.1 项目范围管理概念 概述&#xff1a;项目范围管理就…

【深度学习Week3】ResNet+ResNeXt

ResNetResNeXt 一、ResNetⅠ.视频学习Ⅱ.论文阅读 二、ResNeXtⅠ.视频学习Ⅱ.论文阅读 三、猫狗大战Lenet网络Resnet网络 四、思考题 一、ResNet Ⅰ.视频学习 ResNet在2015年由微软实验室提出&#xff0c;该网络的亮点&#xff1a; 1.超深的网络结构&#xff08;突破1000层&…

C#之泛型

目录 一、概述 二、C#中的泛型 继续栈的示例 三、泛型类 &#xff08;一&#xff09;声明泛型类 &#xff08;二&#xff09;创建构造类型 &#xff08;三&#xff09;创建变量和实例 &#xff08;四&#xff09;比较泛型和非泛型栈 四、类型参数的约束 &#xff08;一…

golangd\pycharm-ai免费代码助手安装使用gpt4-免费使用--[推荐]

golangd-ai免费代码助手安装使用,pycharm可以使用&#xff0c;估计只要是xx的ide都是可以使用这个插件 目前GPT4以及gpt的大规模使用&#xff0c;如何快速掌握以及在ide中快速使用的办法&#xff0c;今天安装一款golangd编辑器的插件已经使用 一、安装以及使用 1.在golangd中…

骨传导耳机是什么?为什么不用塞到耳朵里?

骨传导耳机其实就跟它的名字一样&#xff0c;用骨传导声音的耳机&#xff0c;整个声音传导过程都是开放双耳的&#xff0c;不接触耳膜&#xff0c;佩戴非常舒适的耳机。 为什么不需要塞进耳朵里&#xff0c;首先咱们要先知道骨传导的原理&#xff1a; 如上图所示&#xff0c;骨…

Linux环境搭建(XShell+云服务器)

好久不见啊&#xff0c;放假也有一周左右了&#xff0c;简单休息了下&#xff08;就是玩了几天~~&#xff09;&#xff0c;最近也是在学习Linux&#xff0c;现在正在初步的学习阶段&#xff0c;本篇将会简单的介绍一下Linux操作系统和介绍Linux环境的安装与配置&#xff0c;来帮…

七、用户画像

目录 7.1 什么是用户画像7.2 标签系统7.2.1 标签分类方式7.2.2 多渠道获取标签 7.3 用户画像数据特征7.3.1 常见的数据形式7.3.2 文本挖掘算法7.3.3 嵌入式表示7.3.4 相似度计算方法 7.4 用户画像应用 因此只基于某个层面的数据便可以产生部分个体面像&#xff0c;可用于从特定…

软件测试/测试开发丨Selenium环境安装与使用

Selenium 官方网站&#xff1a; www.selenium.dev/ 简介&#xff1a; 用于web浏览器测试的工具&#xff1b;支持的浏览器包括IE&#xff0c;Firefox&#xff0c;Safari&#xff0c;Chrome&#xff0c;Edge等&#xff1b;使用简单&#xff0c;可使用Java&#xff0c;Python等…

派森编程软件python好学吗,派森语言python干什么的

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;派森编程软件python有什么用&#xff0c;派森编程软件python好学吗&#xff0c;现在让我们一起来看看吧&#xff01; 1、python真的值得学吗&#xff1f; 不建议学python的原因&#xff1a; 1、语言性能差 对于C老手…

【Python】logging模块笔记

目录 日志级别 四个组件 记录器 处理器 处理器 格式化器 格式 用法1&#xff1a;小项目可以采用编程的方法 用法2&#xff1a;建议采用配置文件的方式 用法3&#xff1a; 字典配置 日志级别 #默认的日志输出为warning # 使用baseConfig() 来指定日志输出级别 # 同时&#x…

尚医通9:医院列表功能+GateWay网关

内容介绍 1、医院列表功能&#xff08;接口&#xff09; 4、医院列表功能&#xff08;前端&#xff09; 5、更新医院上线状态功能 6、医院详情 7、GateWay网关 8、医院排班管理需求分析 9、查看医院所有科室接口、前端 医院列表功能&#xff08;接口&#xff09; 接口…

空中出租车运营公司【Flewber Global】申请纳斯达克IPO上市

猛兽财经获悉&#xff0c;总部位于美国纽约的空中出租车运营公司Flewber Global Inc&#xff0c;近期已向美国证券交易委员会&#xff08;SEC&#xff09;提交招股书&#xff0c;申请在纳斯达克IPO上市&#xff0c;股票代码为&#xff08;FLYF&#xff09;,Flewber Global计划通…

英伟达 H100 vs. 苹果M2,大模型训练,哪款性价比更高?

M1芯片 | Uitra | AMD | A100 M2芯片 | ARM | A800 | H100 关键词&#xff1a;M2芯片&#xff1b;Ultra&#xff1b;M1芯片&#xff1b;UltraFusion&#xff1b;ULTRAMAN&#xff1b;RTX4090、A800;A100&#xff1b;H100&#xff1b;LLAMA、LM、AIGC、CHATGLM、LLVM、LLM、LLM…

基于深度强化学习的DQN模型实现自动玩俄罗斯方块游戏(附详细代码讲解)

一、DQN&#xff08;Deep Q-Network&#xff09;方法概述 DQN&#xff08;Deep Q-Network&#xff09;是一种强化学习方法&#xff0c;通过结合Q-learning算法和深度神经网络来解决强化学习问题。它是深度强化学习的里程碑之一&#xff0c;由DeepMind在2013年提出&#xff0c;被…

AI绘画StableDiffusion实操教程:可爱头像奶茶小女孩(附高清图片)

本教程收集于&#xff1a;AIGC从入门到精通教程汇总 今天继续分享AI绘画实操教程&#xff0c;如何用lora包生成超可爱头像奶茶小女孩 放大高清图已放到教程包内&#xff0c;需要的可以自取。 欢迎来到我们这篇特别的文章——《AI绘画StableDiffusion实操教程&#xff1a;可爱…