Skip to Content
先整理?
book

先整理?

by Kent Beck
May 2025
Intermediate to advanced
124 pages
1h 7m
Chinese
O'Reilly Media, Inc.
Content preview from 先整理?

第 28 章 可逆结构变化 可逆结构变化

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

糟糕的发型和糟糕的纹身有什么区别?糟糕的发型会长大,而糟糕的纹身却是永远的(好吧,不是永远的永远,但它更难消除)。

结构变化与行为变化有何不同?与先行 Tidy 相关的一个特性是,结构变化通常是可逆的。你提取了一个辅助函数,但不喜欢它?内联它。就像那个辅助函数从未存在过一样。

这与令人遗憾的行为改变形成鲜明对比。比方说,你发出了 10 万份印错号码的税务通知。现在怎么办?好吧,你要花很多钱来修复它们。对你声誉的损害可能是永久性的。如果你能在发出通知五分钟而不是发出五分钟发现这个问题就好了。

一般来说,我们应该区别对待可逆转的决策与不可逆转的决策。对不可逆转的决定进行复审、双重检查、三重检查是非常有价值的。步伐应该缓慢而慎重。即使决策有很大的好处,但如果我们做错了,也有可能带来很大的坏处。是的,我们想要好处,但更想避免坏处。

可逆决策如何?大多数软件设计决策都很容易逆转。这样做有一些好处(正如我们在本书中看到的那样,可以更容易地改变行为)。但其实也没有什么坏处,因为如果我们发现某个决策是错误的,我们可以很容易地推翻它。

因为避免错误的价值很小,所以我们不应该在这方面投入太多。这就是我在本书中选择 "Tidy "来描述我们正在做的事情时所暗示的经济现实。这没什么大不了的。只是 Tidy。

代码审查流程(我曾多次承诺要毁掉它,但现在还不是时候)不区分可逆和不可逆的更改。最终,我们做了同样的投资,却得到了截然不同的回报。真是浪费。

无法逆转的设计变更怎么办?例如,"提取即服务 "往往是个大问题,很难撤销。再多想一想,比如先真正实现一个原型。我说的 "实施 "是指投入生产。这需要功能标志吗?好的。需要在很多地方检查功能标志吗?好吧,先进行 Tidy,这样只需要检查几个功能标志。

你知道我们在做什么吗?我们正在使 "提取即服务 "具有可逆性,至少在一段时间内是这样。如果我们进行到一半,意识到这是一种本可以使用 SQL 查询的服务(谢谢,Josh Wills),那么我们就可以改变它,而不必大惊小怪。

另一种可逆设计决策变得不可逆的情况是,该决策会在整个代码库中传播。现在,从整数变为 long 需要改动数百万个点,其中有些还非常棘手。好吧: 1)一下这个决定是否有可能传播,2)是的,这种情况会发生,当它发生时,我们要一次一次地整理。先整理或后整理一段时间,然后再整理,完成决策的逆转(一如既往,总之是可中断的切片)。

似乎有一种理想主义的 宅男思维,认为只要我们的决策做得更好,我们就永远不会犯错。我年轻时就是这样一个信徒,是 "只要我无限聪明 "的崇拜者。幸运的是,我克服了它。我了解了可逆性的价值(早在我为它命名之前),并认识到让决策可逆的价值。

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

超越Vibe编程

超越Vibe编程

Addy Osmani
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉

Publisher Resources

ISBN: 9798341656949