代码的形状:重构的方向

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

涵树:代码的形状:从外到内的探索与实践

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

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

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

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

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

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

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

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

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

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

相关推荐
一隅论数智1 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
一起聊电气1 天前
2026工厂智能照明改造怎么做?从能耗痛点看智慧照明的落地路径
其他
打螺丝的小李1 天前
集团型多基地 QMS 选型:跨工厂质量统一管控谁更强
其他
芯片封装工程师1 天前
台式选择性波峰焊接机,精密焊接新选择
其他
深圳老胡2 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
Because_of_Her12 天前
并查集-听课笔记
笔记·算法·并查集
彧azz2 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
陈卫军老师2 天前
陈卫军:把口味写在一张纸上,店才稳得住
经验分享·笔记·流量运营
`流年づ2 天前
人工智能学习笔记 - 补充
人工智能·笔记·深度学习·学习
芯片封装工程师2 天前
抽屉式真空气相焊接炉:电子制造焊接工艺进阶的关键设备
其他