惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Hacker News: Ask HN
Hacker News: Ask HN
N
News and Events Feed by Topic
Forbes - Security
Forbes - Security
The Last Watchdog
The Last Watchdog
TaoSecurity Blog
TaoSecurity Blog
Schneier on Security
Schneier on Security
SecWiki News
SecWiki News
V
Vulnerabilities – Threatpost
Project Zero
Project Zero
O
OpenAI News
W
WeLiveSecurity
Security Archives - TechRepublic
Security Archives - TechRepublic
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
H
Hacker News: Front Page
Cisco Talos Blog
Cisco Talos Blog
Spread Privacy
Spread Privacy
Help Net Security
Help Net Security
P
Privacy & Cybersecurity Law Blog
K
Kaspersky official blog
S
Security @ Cisco Blogs
Latest news
Latest news
AWS News Blog
AWS News Blog
U
Unit 42
Martin Fowler
Martin Fowler
阮一峰的网络日志
阮一峰的网络日志
S
Secure Thoughts
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Know Your Adversary
Know Your Adversary
Scott Helme
Scott Helme
博客园 - 司徒正美
B
Blog RSS Feed
C
Check Point Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
D
Docker
Google Online Security Blog
Google Online Security Blog
Jina AI
Jina AI
aimingoo的专栏
aimingoo的专栏
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Last Week in AI
Last Week in AI
月光博客
月光博客
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
SegmentFault 最新的问题
NISL@THU
NISL@THU
T
The Blog of Author Tim Ferriss
C
Cisco Blogs
Attack and Defense Labs
Attack and Defense Labs
小众软件
小众软件

一颗小树

周更的第 100 篇 改变阅读方式 宝贵的人生建议 小树的工具库 2023 仅需 10 分钟,用 GPTs 实现文章总结助手 高质量的需求交付 产品始于问题,而不是解决方案 如何更好地休息 最优解人生 与体重斗,其乐无穷 结构化 prompt = 数字员工? 持续创作的法门 如何降低知识焦虑 7 月思维碎片 N 倍生产力提升:我的 AI 助理 Indie Hacker,互联网打工人的下一个出路? 如何成就伟大事业 夏日碎片 小报编辑的自我修养 一颗小树 #49 投入真实生活 一颗小树 #48 过年杂记 一颗小树 #47 我的人生信念(2023) 一颗小树 #46 回本就卖 一颗小树 #45 规划和落地 小树的 2022 年终总结 一颗小树 #44 构建高质量信源 一颗小树 #43 我的 2022 书单 一颗小树 #42 阳了怎么办 一颗小树 #41 一人企业 一颗小树 #40 非必要别正常啦 一颗小树 #39 阅读和创造 一颗小树 #38 疫情生活碎片 一颗小树 #37 基于多维表格的可转债投资系统 一颗小树 #36 飞盘初体验 一颗小树 #35 雁栖湖半日游 一颗小树 #34 初探多维表格 一颗小树 #33 回不去的名字叫家乡 一颗小树 #32 生活需要留白 一颗小树 #31 Figma 的成功之道 一颗小树 #30 拓宽自己 拥抱善意 一颗小树 #29 有关下雨的记忆 一颗小树 #28 隐入尘烟 一颗小树 #27 找到并坚持自己的热爱 一颗小树 #26 好产品的“差”改版 一颗小树 #25 吹吹南澳岛的海风 一颗小树 #24 代码重构的一点心得 一颗小树 #23 和团队新同学的对话 一颗小树 #22 从《干法》中学到的 一颗小树 #21 阿里四年我的收获和感想 一颗小树 #20 周更半年我学到的事 一颗小树 #19 慢慢来比较快 一颗小树 #18 只规划每天最重要的三件事 一颗小树 #17 裁员潮下的反思 一颗小树 #16 纪录片的力量在于真实 一颗小树 #15 世界很小但很好 一颗小树 #14 让自己成为问题的终结者 一颗小树 #13 别忘记你的热爱 一颗小树 #12 聊聊写作这件事 一颗小树 #11 开始投资前更重要的事 一颗小树 #10 疫情囤货指南 一颗小树 #9 疫情之下 重建内心的秩序 一颗小树 #8 不要倒在黎明前 一颗小树 #7 从小孩子身上学到的事 一颗小树 #6 和自己的产品一起成长 一颗小树 #5 技术对生产力的的变革是不可阻挡的 一颗小树 #4 暴风雨的意义 一颗小树 #3 投资成功,是我们变成一个更好的人之后自然的结果 一颗小树 #2 持续学习来应对这个复杂多变的世界 一颗小树 #1 任天堂和上岭村 一颗小树 #0 这是写给你们的第一封信 游戏改变世界 把自己给开源了 构建自己的不为清单 有爱和被爱 做了一点微小的工作 小树的 2021 年终总结 小树的 2020 年终总结 与其感慨路难行,不如马上出发 阿里前端也切图?不,人工智能帮你做 如何写好简历,拿到大厂 offer 的敲门砖 任时光匆匆流去 | 2019 年终总结 聊聊在阿里远程办公那点事儿 在 D2 做主持人是怎样一种体验? 提高工作效率的几个方法 有限状态机在 CSS 动画中的应用 「译」React 项目结构和组件命名之道 编写小而美函数的艺术 使用纯粹的JS构建 Web Component 翻译计划-状态管理请三思 利用Dawn工程化工具实践MobX数据流管理方案 高性能 MobX 模式(part 3)- 用例教程 高性能 MobX 模式(part 2)- 响应变化 技术文章写法浅谈 翻译计划-用node.js开发一个可交互的命令行应用 无他,唯手熟尔-前端实习面试题篇 工欲善其事必先利其器-前端实习简历篇 手把手带你用原生js实现css属性的set和get 我们来翻翻元素样式的族谱-getComputedStyle 翻译计划-从sass到PostCSS 把简单做好也不简单-css水平垂直居中
读《重构》有感
也树 · 2023-11-19 · via 一颗小树

你好,我是小树。这是我为你写的第 89 封信。每期都会同步更新在微信公众号一颗小树

最近接触到一部分新业务,在开发过程中经常会做一些旧有逻辑的梳理和重构,又翻开《重构:改善既有代码的设计》这本书重读了一遍。

有一些观点值得学习:

如果你要给程序添加一个特性,但发现代码因缺乏良好的结构而不易于进行更改,那就先重构那个程序,使其比较容易添加该特性,然后再添加该特性。

很多代码并不是一开始就变差的,大多是因为实现短期目标而忽视了整体的架构设计和原则,于是代码就慢慢失去了自己的结构。

接手者越来越难通过直接阅读源码来理解原有的设计,想要做优化又担心影响已有的功能,于是问题逐渐累积,最终积重难返。

重构的一个很好的时机就是在添加新功能之前。

尤其是在不够熟悉的业务面前,我需要先理解代码在做什么,然后才能着手修改,重构也是理解代码的最快方式。

在重构前,先实现完备的测试,以便在重构过程中持续检验是否破坏了原有的代码逻辑。

重构中出问题是不可避免的,完备的测试是非常必要的。

通常情况下,不建议在重构过程中加入其他的新功能和 bug 修复,重构应当是在已有逻辑不变的情况下,让后续的改动更容易。

因此,事前梳理好用户视角的功能测试用例,或是偏向代码本身的 E2E 测试和单元测试,都能很好地保障已有逻辑。

小步修改,频繁反馈,避免改动太多导致排查问题困难。重构的关键在于运用大量微小且保持软件行为的步骤,一步步达成大规模的修改,尽可能避免让代码进入不可工作的状态,即使重构没有完成,也可以随时停下来。

重构过程中,尽量避免一步到位的想法。把重构的粒度拆的足够细,让每次提交都能独立工作,并且通过测试用例。

这样的好处是能够及时发现自己改动的错误,很容易定位和修复,如果一次性改动过多,遇到问题很可能就前功尽弃了。

好代码的检验标准是人们能否轻而易举地修改它。

这个应该不用解释,遇到过一次很难改的代码就懂了。

重构和性能优化是两回事,重构是为了让代码更容易修改,性能可能变快也可能变慢,性能优化更关心如何变得更快,代码可能会变得更难理解和维护。

关于性能,其实在开始的时候就建立比较完备的度量是很重要的,这样才能发现真正的性能瓶颈。

如果一上来就使用常规的方式去做优化,很可能大部分优化工作都是不必要的,有可能被优化的代码很少执行,或者是影响甚微。

性能问题往往都处在细微之处。

最后,用书中的一句话结尾吧。

重构的意义不在于把代码库打磨得闪闪发光,而是因为它能让我们更快:添加功能更快,修复 bug 更快。

碎碎念

最近发现上海译文出版社再版了村上春树的一套书,想起了 10 年前在学校图书馆看的白色封面的那一套。

找点时间,再看一遍吧。

谢谢你的关注,我们下期再见。👋🏻


往期推荐

你也可以在这里找到我:即刻Twitter、微信公众号一颗小树

如果你觉得这篇文章对你有用,欢迎分享给更多好友。