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

推荐订阅源

D
Docker
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
Cisco Blogs
Scott Helme
Scott Helme
Know Your Adversary
Know Your Adversary
NISL@THU
NISL@THU
C
Cyber Attacks, Cyber Crime and Cyber Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Schneier on Security
I
Intezer
Spread Privacy
Spread Privacy
AWS News Blog
AWS News Blog
V
Vulnerabilities – Threatpost
Cloudbric
Cloudbric
V2EX - 技术
V2EX - 技术
Google Online Security Blog
Google Online Security Blog
L
Lohrmann on Cybersecurity
Recent Commits to openclaw:main
Recent Commits to openclaw:main
L
LINUX DO - 热门话题
S
Secure Thoughts
T
The Exploit Database - CXSecurity.com
博客园 - 【当耐特】
Recent Announcements
Recent Announcements
Security Archives - TechRepublic
Security Archives - TechRepublic
Stack Overflow Blog
Stack Overflow Blog
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
K
Kaspersky official blog
阮一峰的网络日志
阮一峰的网络日志
博客园_首页
Latest news
Latest news
B
Blog
F
Full Disclosure
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
L
LangChain Blog
GbyAI
GbyAI
Last Week in AI
Last Week in AI
S
Security Affairs
Apple Machine Learning Research
Apple Machine Learning Research
N
Netflix TechBlog - Medium
Security Latest
Security Latest
Vercel News
Vercel News
Y
Y Combinator Blog
G
GRAHAM CLULEY
S
Securelist
T
Troy Hunt's Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
雷峰网
雷峰网

AirCloud 日常

快速生成 AI 应用的框架对比:Gradio、Streamlit 和 Dash Node.js 二进制打包:pkg 原理解析 - AirCloud 日常 基于 K8s 容器化运行 web 端对端测试 关于 JupyterLab cell 输出保持问题的设计方案 - AirCloud 日常 读完 type-challenges,我总结了如下常用的内容 - AirCloud 日常 使用 Rust 开发 python 模块 基于 Container 架构的多框架前端应用 - AirCloud 日常 我们应该如何进行 Code Review ? - AirCloud 日常 Clean Code》读书笔记 - AirCloud 日常 使用 fst-json 自动生成更快的 json 序列化方法 《代码精进之路》与《代码整洁之道》-读书笔记 - AirCloud 日常 《架构整洁之道》-读书笔记 - AirCloud 日常 React Conf 2021 内容概要 - AirCloud 日常 PC 开发技术选型:Electron 不是银弹 - AirCloud 日常 web 页面内存分析与生产环境禁用 console - AirCloud 日常 通过优化合成层优化性能 - AirCloud 日常 了解 StackOverFlow 上面最受欢迎的语言 Rust - AirCloud 日常 一些性能相关的 JavaScript 代码编写建议规范 - AirCloud 日常 如何让你的精力更多的用于提高技术深度 - AirCloud 日常
《重构》-读书笔记 - AirCloud 日常
2022-01-02 · via AirCloud 日常

开始重构

如果你要给程序添加一个特性,但发现代码因缺乏良好的结构而不易于进行更改,那就先重构那个程序,使其比较容易添加该特性,然后再添加该特性。
重构前,先检查自己是否有一套可靠的测试集,这些测试必须有自我检视的能力。

事实上很多时候,测试集都是被我们忽略的

营地法则:保证你离开的时候代码库一定比原来的更加健壮。

什么是重构?根据重构这本书的定义,如果有人说他们的代码在重构过程中有一两天的时间是不可用的,基本上可以确定,他们在做的事情不是重构。

何时重构

事不过三法则(Rule of Three):第一次做某件事情的时候只管去做,第二次做某件事情的时候会产生反感,但无论如何还是可以去做,第三次再做类似的事情,你就应该重构。

在《代码精进之路》这本书中,也提到了这个原则。

另外的一个时机是,每次要修改时,首先令修改很容易(警告:这件事有时候会很难),然后再进行这次的修改。

比如,笔者最近在做一个长链接客户端 SDK,最初这个 SDK 功能很简单,我直接加功能即可,后面有一次当我要修改的时候,我发现这个 SDK 的修改已经变得异常复杂了,这个时候我知道我应该重构了。

重构法则

这里对一些我们实际场景中遇到,但是通常会被我们忽视的一些法则进行列举。

霰弹式修改

如果我们代码中的模块特别多,如果我们每次遇到一个变化都需要在不同的小模块中做许多小修改,我们所面临的坏味道就是霰弹式修改。
这个时候我们需要思考重构,最好我们不同的模块都是正交的。

慎重注释

有的时候,我们写注释是因为这段对应的代码逻辑很糟糕。
因此当你感觉需要撰写注释的时候,请先尝试重构,试着将所有的注释变成多余。

提炼变量

对于复杂语句,提炼变量可以增加可读性。