首页/开发/代码质量与评审速查/手法:Introduce Assertion(引入断言)
重构手法62 条

手法:Introduce Assertion(引入断言)

用断言显式化代码所依赖的前提:断言是团队对调用契约的记录,帮助快速定位违反点;生产环境注意断言开关(如 Java -ea)与替代方案(抛异常)。

作用前提与不变量显式化、快速失败
区别对内部假设用断言;对外部输入用校验与错误处理
开关Java 断言默认关闭、Python 可全局开启

示例

示例
# Java
assert discount >= 0 && discount <= 1 : "discount out of range";

# Python
assert total >= 0, "total must be non-negative"
不要把断言用作生产校验:Java 断言默认关闭,失效时校验被静默跳过。

易错点

  • 断言写副作用表达式:关闭时逻辑静默丢失
  • 对外部输入只断言不校验:生产环境不设防

数据来源与参考

  • 《重构》第 2 版 · 第 10 章(Introduce Assertion)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌