【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

重构时应避免过度思考

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

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

关注

评论

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

选择美国高防服务器,保障您的业务不受网络攻击

一只扑棱蛾子

美国高防服务器 高防服务器

OpenHarmony应用全局的UI状态存储:AppStorage

OpenHarmony开发者

OpenHarmony

低代码如何赋能实体经济走向数实融合

力软低代码开发平台

七个开发者不可不知的VS Code小技巧

树上有只程序猿

vscode

全球领先的即时通讯厂家,为企业提供卓越沟通解决方案

WorkPlus

九月 Web3 游戏报告: 数量增长,巨头入场,用户获取和留存仍存挑战

Footprint Analytics

区块链游戏 NFT Web3 游戏 Web3 Games

[支持M1兼容14系统]axure rp 10 mac中文版 Axure RP 10授权激活图文教程

晴雯哥

大模型训练的轻量化视觉预训练模型

百度开发者中心

人工智能 大模型训练

深入理解MySQL锁机制原理

这我可不懂

MySQL mysql锁原理

开源贡献难吗?

字节跳动云原生计算

flink 开源 字节

报名倒计时 | 超硬核!第四届中国云计算基础架构开发者大会邀你参会

OpenAnolis小助手

云原生 深圳 龙蜥社区 机密计算 CID

IPQ9574, IPQ9554, IPQ4029, IPQ5018-IPQ6010- high-performance multi-core cpu-leading WiFi revolution

wifi6-yiyi

ipq9574

双翻页大屏看书,Mate X5上的华为阅读让你“阅”如纸上

最新动态

DR5白金版 for mac(PS一键磨皮插件Delicious Retouch)支持ps2022 v5.0汉化版

晴雯哥

华新丽华∣国产化价值替代的先行者

用友BIP

用友 Fast by BIP

重构AI智慧未来,小度全屋智能生态再进化

新消费日报

HarmonyOS语言基础类库开发指南上线啦!

HarmonyOS开发者

HarmonyOS

优化模型之”标注错误“

矩视智能

深度学习 机器视觉

内部即时通讯软件,为企业协同办公保驾护航

WorkPlus

Snagit for mac(屏幕截图工具) 2023.2.4永久激活版

mac

苹果mac Windows软件 屏幕截图软件 Snagit 2023

通过 Random 和 UUID 算法实现 JMeter 的随机数生成

Liam

程序员 测试 Jmeter 测试工具 随机数

技术同学如何设计职业规划

老张

职业规划 职场成长 职场发展

2023年知名国产数据库厂家汇总

行云管家

数据库 国产化 数据运维 数据安全运维 信创国产化

大模型训练:Transformer模型、架构与训练方法

百度开发者中心

人工智能 大模型训练

深度学习CV任务的突破与优化

百度开发者中心

人工智能 深度学习 大模型训练

私有化部署助力企业信息安全,WorkPlus助您完美替代企微、钉钉、飞书!

WorkPlus

数字孪生智慧市政三Web3D可视化管理平台

2D3D前端可视化开发

物联网 可视化 智慧城市 数字孪生 智慧市政

Camtasia 2023 for Mac(视频录制和剪辑软件) v2023.3.1中文激活版

mac

苹果mac Windows软件 Camtasia 2023 视频软件

数据库安全运维是什么意思?数据库安全运维系统用哪家好?

行云管家

数据库 数据安全 数据库安全 数据安全运维

MySQL的自增id会用完吗?用完怎么办

互联网工科生

MySQL MySQL自增ID

NFTScan 支持非 EVM 公链的 NFT Collection 的认证功能

NFT Research

NFT NFT\ NFTScan

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