2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

重构时应避免过度思考

  • 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:024330
用户头像

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

关注

评论

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

Transformer大模型学习导引:光速掌握大模型

鲸品堂

大模型 企业号 3 月 PK 榜

何为代码检查服务的门禁级检查

华为云开发者联盟

开发 华为云 华为云开发者联盟 代码检查

大模型微调实战:利用INT8/FP4/NF4量化技术提升性能与效率

百度开发者中心

深度学习 大模型

纯C语言框架助力降低大模型运行成本

百度开发者中心

人工智能 C语言 大模型

区块链DAPP质押合约代币系统开发

l8l259l3365

Databend 开源周报第 136 期

Databend

精选!常用的10款会议软件推荐+4款会议必备模板!

彭宏豪95

会议 在线白板 办公软件 在线协作 效率软件

科普:嵌入式多核并行仿真

DevOps和数字孪生

仿真建模 多核并行仿真

基于SkyEye仿真飞腾处理器:运行U-Boot并加载Phytium-FreeRTOS

DevOps和数字孪生

SkyEye 飞腾处理器

开源推荐 | 简洁且强大的开源堡垒机OneTerm

37丫37

DevOps 运维 运维自动化 堡垒机 安全审计

[自研开源] MyData v0.7.3 更新日志

LIEN

开源 数据集成 业务融合 API对接 mydata

数据平台“国产替代”掣肘在迁移?奇点云的工业制造实践解读

先锋IT

官宣|Apache Flink 1.19 发布公告

Apache Flink

深度解析:Allure报告如何提升你的测试效率?

测试人

软件测试

北京大学讲座:大模型时代的软件研发:技术、范式与工具

人工智能 华为云

第43期 | GPTSecurity周报

云起无垠

中国滑雪运动趋势洞察2024

易观分析

报告 滑雪

报名最后一天!Farris-Vue前端组件创新挑战赛火热报名中!

inBuilder低代码平台

百度交易中台之系统对账篇

百度Geek说

数据 交易 对账系统

ByteHouse白皮书即将发布,揭秘如何让万台节点的OLAP性能大涨

字节跳动数据平台

大数据

【AAAI 2024】M2SD:通过特征空间预构建策略重塑小样本类增量学习

阿里云大数据AI技术

#人工智能

低代码助力企业数据资产价值升级

Crabc低代码平台

低代码 数字化 数据服务

基于SkyEye仿真6678处理器:实现国产操作系统ReWorks仿真运行

DevOps和数字孪生

国产操作系统ReWorks SkyEye

AI技术在医疗领域中有哪些改变?

小魏写代码

AI大模型助力:离线生成中英双语字幕

百度开发者中心

人工智能 数字化时代 大模型

华为云数据库创新发展论坛,打造行业更优数据库底座!

华为云开发者联盟

数据库 后端 华为云 云原生数据库 华为云开发者联盟

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