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

推荐订阅源

V
Vulnerabilities – Threatpost
U
Unit 42
F
Fortinet All Blogs
aimingoo的专栏
aimingoo的专栏
P
Proofpoint News Feed
F
Full Disclosure
月光博客
月光博客
Engineering at Meta
Engineering at Meta
博客园_首页
The Register - Security
The Register - Security
G
Google Developers Blog
The Cloudflare Blog
博客园 - Franky
K
Kaspersky official blog
A
Arctic Wolf
Scott Helme
Scott Helme
C
Cisco Blogs
Hugging Face - Blog
Hugging Face - Blog
C
Check Point Blog
NISL@THU
NISL@THU
AI
AI
D
DataBreaches.Net
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Stack Overflow Blog
Stack Overflow Blog
Project Zero
Project Zero
The GitHub Blog
The GitHub Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
量子位
Vercel News
Vercel News
T
Tor Project blog
P
Privacy International News Feed
D
Docker
I
Intezer
L
LangChain Blog
P
Proofpoint News Feed
Security Latest
Security Latest
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threatpost
博客园 - 聂微东
AWS News Blog
AWS News Blog
Martin Fowler
Martin Fowler
P
Privacy & Cybersecurity Law Blog
V
V2EX
Last Week in AI
Last Week in AI
C
Cybersecurity and Infrastructure Security Agency CISA
The Hacker News
The Hacker News
T
Tenable Blog
Blog — PlanetScale
Blog — PlanetScale
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog

博客园 - 涵树

Rust中使用RocksDB索引进行高效范围查询的实践指南 笔记系统开源地址 前端和后端开发的异同 micro-service构建平台 发布到NPMJS 前端开发的思考--看起来简单,做起来难 足迹 星际迷航3 -- 父亲的纪念 数据建模与框架设计的暂时总结 一次“任性”的编码 断言与异常(Assertion Vs Exception) 项目管理的持续思考 敏捷中的沟通与故事点 RequireJS+JQueryMobile 项目管理:人 工厂方法(Factory Method),思考 寻觅[Getting Answers] 我所知道的Javascript 问“为什么”
代码的形状:重构的方向
涵树 · 2025-01-09 · via 博客园 - 涵树

大概2周前写了一篇《代码的形状:从外到内的探索与实践》

觉得这个话题还可以继续,它是一个从无形到有形的过程,而这个过程感觉就是王阳明先生说的“心即理”的探寻过程。

我讨论代码的形状,一个初衷是为了降低代码维护的心智负担,而要达到这一目的,其实也是要使代码更加符合于“理”。

使用tree命令来查看代码的目录结构,这个方法颇为有效,他可以让我们很方便的评估这样的结构是否符合我们对项目逻辑的理解。

 

这是一个动态且永不停息的过程,代码在变,而你同时也在变。上面的这个common模块,之前也没有这么多的文件,也是一步一步的重构出来的。其中有一些在重构的过程中修改了名字。

“名字”这个东西,在编程的世界里,往往被一些初学者甚至是部分有经验的开发者视为无足轻重的细节。他们可能觉得,只要代码逻辑正确,功能实现,名字不过是些符号,随便取取就行。然而,我深感这种观念大错特错。“名字”的重要性、价值和可操作性,在我看来,远远胜过了设计模式和架构。

首先,代码中的“名字”是逻辑清晰度的直接体现。当我们为变量、函数、类或模块取名时,如果名字是随意的、模糊的,那么这往往反映出我们对这段代码的逻辑理解还不够清晰。一个好的名字,应该能够准确地传达出代码元素的用途、功能和性质,让阅读者一眼就能明白这段代码的意图。相反,一个随意的名字,获取不够精确的名字,会给代码维护增加心智负担,增加维护的难度。

因此,名字的选择直接影响着代码的可维护性。如果名字不清晰、不准确,那么当日后需要对代码进行修改或扩展时,开发者就会陷入困境。那么如何使名字“清晰”和“准确”呢?呵呵,这里感觉就是一个玄学,或者,我说它不是静态的。即没有一个永远“清晰”和“准确”的名字存在。我们需要不断的review,如果有看不懂的地方,可能就要考虑重构或者修改“名字”了。

以上面的代码为例,如果我想不起某一个方法的作用,那么我就要考虑修改名字了。

然而,我发现有一个悖论存在于我们的开发实践中。那就是,当我们感觉到代码测试老是有改不完的bug,项目已经变得难以维护时,才想起来要重构。他们希望通过“重构”这剂良药来改变项目的现状,让代码变得更加清晰、可维护。但是,这个时候的“重构”本身也是很危险的。因为在一个已经充满bug、逻辑混乱的代码中进行重构,就像是在一个摇摇欲坠的建筑上进行改造,一不小心就可能引发更大的崩塌。重构带来的改动可能会引入新的bug,大概率会破坏原有的功能,很难起到期望的效果。这也可能是互联网上的流传的“屎山”代码越堆越高的原因吧,没人敢去重构。

这也是我前面说的,“名字”的重要性,价值和可操作性远远胜于重构和系统架构的原因,因为,好的命名是重构和系统架构改进的前提。这是我所相信的,你呢?