切斯特顿围栏 (Chesterton’s Fence)

切斯特顿围栏是一个关于改革与重构的经典原则。其核心观点是:在移除或改变某物之前,必须先理清它存在的原因。

经典表述

Source: 2026-06-21-note-Software-Engineering-at-Google--Hyrum-Wright--Tom-Manshreck(来源未公开)

切斯特顿指出,假设路中间有一道栅栏或大门:

  • 现代的改革者会愉快地走上前去说:“我看不出它的用处,让我们把它清除掉。”
  • 比较聪明的改革者最好这样回答:“如果你看不出它的用处,我当然不会让你把它清除掉。只有当你走上前去,付出了思考,并弄清楚它被建造的原本意图后,如果你觉得这意图不再适用,我才会允许你把它拆除。”

在软件工程中的应用

Source: 2026-06-21-note-Software-Engineering-at-Google--Hyrum-Wright--Tom-Manshreck(来源未公开)

  • 避免冲动重写:当工程师遇到不熟悉的代码、语言或范式时,往往会很快得出“这写得太糟了,应该推倒重写”的结论。然而,优秀的实践要求在重构或删除某段逻辑之前,必须充分发掘并理解其上下文和历史决策背景。
  • 记录上下文:如果发掘了上下文之后发现原设计确实过时或冗余,可以继续进行更改,但应该在代码或文档中记录下你的推理过程,为未来的阅读者留下线索,避免他们再次陷入相同的困惑。
  • 慎用全盘重写:重写往往比想象中更危险,通常重写会丧失原有系统在解决各种边缘案例(Edge Cases)时积攒下的暗知识。