在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

重构时应避免过度思考

  • 2012-02-11
  • 本文字数:1043 字

    阅读完需:约 3 分钟

重构是一门在不改变软件外部行为情况下,改善既有代码内部结构的一门技术。从表面来看,重构需要引入大量的思考行为,然而,过度地思考同样会产生不利的影响。

Kent Beck 提到,重构中面临最大的挑战就是如何做到循序渐进,循序渐进指的是如何将工作分解为可控的步骤,并且每个步骤都易于管理。重构步伐过快会导致不稳定代码的出现。此外,想得越多,越是谨慎反而会严重减慢重构的步伐。

正如许多与我结对编程的伙伴都会告诉你的那样,我有一个非常不招人喜欢的习惯:在重构时总会说“不要再想啦”。我知道这并不是我真正要说的,因为我不可能去故意表达这个意思,但是直到现在,我才有机会可以给出一个更好的解释。

Kent 解释了“水平和垂直重构”的概念。垂直重构是指调整方法或代码块在调用堆栈中的上下顺序,然而水平重构则指的是在类似于同级别的对象间所做的调整。依 Kent 所述,重构时应避免同时做上述两种调整。

当需要重构具有多重调用或是多重实现的对象时,就要额外小心,并且重新回到垂直和水平方法,将这两者操作分开进行,并且要时刻注意代码重构的深度。

话虽如此,做到并不容易⋯⋯

比较好的一个办法就是使用索引卡(Index Cards):

在电脑旁放置索引卡会帮助我保持专注。当我在处理水平重构时突然意识到还可以做垂直重构时,我会迅速记在索引卡上,然后马上回到刚才正在进行的工作中。这种方法不仅可以使我在进行下一步工作前,有效地先将手头的工作结束,同时,又不会导致某些好点子被遗忘。方法之好用,整个过程感觉就像是在做冥想,技能感受到自己的呼吸,又不会被完全自我的意识所牵绊。

J. B. Rainsberger 同意这种观点并同时指出:

无论你在做什么,想要专注时,手边准备一张卡片和一支笔。当有奇思妙想突然在脑海中闪现,而这些事情又不需要立刻处理时,就可以用 5 个或更少的字将它写下来,然后继续回到刚才所作的事情中。效果甚是神奇。

这与 Joshua Kerievsky 所提倡的 Narrow Changem 模式非常相似。每次只专注于一小部分的变化点,然后再继续在后续的重构中应用 Narrow Change 或是 Parallel Change 原则。

尽管重构中需要思考,但是,保持专注并避免潜在的干扰对良好的重构行为是很有必要的。Kent 说道:

我的同伴经常会在重构的过程中产生一些好的想法,比如如何将一些函数挪到 B 中。这时我就会告诉他停止思考。我真实的目的并不是不想让他去思考,我只想让他专注的把手头的事情先做完。就像我们往墙上钉钉子,钉子才刚钉进去了一半,我们没有理由放下手里的活去钉另外一个。

查看英文原文: Stop Thinking During Refactoring

2012-02-11 21:024355
用户头像

发布了 156 篇内容, 共 59.2 次阅读, 收获喜欢 7 次。

关注

评论

发布
暂无评论
发现更多内容

“一句话秒出PPT“的荣耀YOYO,AI生产力有多强?

脑极体

AI

加工进化论:SPL 一键加速日志转指标

阿里巴巴云原生

阿里云 云原生 SPL sls

GPU 降成本免运维,睿观 AI 助手选择函数计算

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

AI 英语口语练习 App 开发

北京木奇移动技术有限公司

软件外包公司 QT外包开发 QT开发公司

AI会取代漏洞赏金猎人吗?2025年技术从业者的深度分析

qife122

网络安全 AI技术

如何通过YashanDB数据库分析市场趋势?

数据库砖家

如何通过YashanDB数据库强化数据安全管理

数据库砖家

如何通过YashanDB数据库提高数据一致性

数据库砖家

通过ETL工具,高效完成达梦数据库数据同步至数仓Oracle的具体实现

谷云科技RestCloud

oracle 数据处理 数据同步 ETL 达梦数据库

吉他检查换弦准确度的方法有哪些呢?Guitar Pro如何帮助吉他新手检查换弦准确度

阿拉灯神丁

吉他学习 Guitar Pro8 音乐软件 技巧分享

数字资产支付 App 的智能合约

北京木奇移动技术有限公司

区块链技术 区块链开发 软件外包公司

大数据-38 Redis 分布式缓存 详细介绍 缓存、读写、旁路、穿透模式

武子康

Java redis 大数据 分布式 后端

Parallels Desktop 20新特性解析,Parallels Desktop19有必要升级到Parallels Desktop 20版本吗?

阿拉灯神丁

Mac双系统 Parallels Desktop Mac虚拟机下载 虚拟机软件 pd 19

数据中台产品是伪需求吗?

镜舟科技

数据中台 数据处理 StarRocks 实时处理 行业场景适配性

如何通过YashanDB数据库实现企业级数据分区管理?

数据库砖家

OpenLLMetry 助力 LLM 应用实现可观测性

观测云

LLM

CIO 落地 AI 的最佳伙伴,飞书开发套件助力企业提升 AI 生产力

ToB行业头条

飞书 大模型

如何通过YashanDB数据库提升数据处理效率

数据库砖家

AnkiDroid - 开源记忆卡片应用

qife122

android 开源

地平线走进武汉理工,共建智能驾驶繁荣生态

地平线开发者

自动驾驶 走进高校 地平线征程6

如何通过YashanDB数据库提高大数据处理能力

数据库砖家

如何通过YashanDB数据库进行数据审计

数据库砖家

Wikipedia Android应用构建与发布工具集

qife122

android 自动化

如何通过YashanDB实现用户行为分析

数据库砖家

高德智能手表解决方案,助力荣耀手表5 Ultra开启智慧出行

高德开放平台

高德地图 智能穿戴 RTOS

教培行业首发!腾讯云 X 咕泡科技 AI 实训 CDE 平台正式落地

咕泡科技

人工智能 腾讯云 AI 咕泡科技 实训平台

吉他小白必看:吉他初学者指法如何训练,Guitar Pro如何辅助新手理解复杂指法?

阿拉灯神丁

吉他学习 Guitar Pro 音乐制作工具 乐谱软件

ChatGPT,从规则到强化学习

江南一点雨

如何通过YashanDB数据库保障数据合规性

数据库砖家

再获5亿元融资加持,云深处何时走向“C位”?

趣解商业

科技 人形机器人 云深处科技

3小时成为百万富翁 | 金融科技漏洞赏金实战(第一篇)

qife122

漏洞赏金 GraphQL漏洞

重构时应避免过度思考_研发效能_Vikas Hazrati_InfoQ精选文章