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

news/2024/11/8 19:58:48/
  • 👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的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.ppmy.cn/news/988272.html

相关文章

AI聊天GPT三步上篮!

1、是什么? CHATGPT是OpenAI开发的基于GPT(Generative Pre-trained Transformer)架构的聊天型人工智能模型。也就是你问它答,根据网络抓去训练 2、怎么用? 清晰表达自己诉求,因为它就是一个AI助手&#…

Flutter 的线程模型和异步原理

本文字数::36130字 预计阅读时间:91分钟 在Android应用中, 用户时常会遇到界面卡顿的情况,非常影响用户的体验。作为Android开发肯定都知道:应用在主线程里做了大量的耗时操作(例如文件读写, 数…

牛客「土」秘法地震(二维前缀和)

帕秋莉掌握了一种土属性魔法 这种魔法可以在一片kk大小的一个正方形区域内产生地震 但是如果某片即将产生地震的区域内有建筑物,帕秋莉会停止施法 整个地图大小为nm,其中一些地方有建筑 请问有多少种可能的情况,使得帕秋莉会停止施法 输…

【程序员面试金典】02.07. 链表相交

题目 解题思路 Code Java public ListNode getIntersectionNode(ListNode headA, ListNode headB) {if (headA null || headB null) return null;ListNode a headA;ListNode b headB;while (a ! b ) {a a ! null ? a.next : headB; b b ! null ? b.next : headA; …

安装MySQL 5.7.20

基本上是这个过程:安装配置MYSQL教程 第一种出现报错: mysqld: Can’t create/write to file D: ools\MySQL\mysql-5.7.32-winx64… 错误原因及其修改方法 可以看见在报错的时候文件的路径是不对的,正确的路径应该是D: \tools\MySQL\mysql…

RESTful

RESTful 什么是RESTful? REST:Representational State Transfer,表现层资源状态转移 RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务使能接口的场景&…

Python(四十九)获取列表指定元素的索引

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

Android高德地图定位实现签到打卡功能(全网最详细+收藏)

前言 本章根据高德地图API,实现打卡签到功能。用到了定位SDK 和地图SDK、覆盖物。打卡范围图形可以支持多种形状,如:圆形、长方形、多边形。 核心逻辑: 获取当前定位信息,然后通过Marker绘制小图标进行展示&a…