首页/开发/代码质量与评审速查/手法:Remove Flag Argument(去标志位参数)
重构手法62 条

手法:Remove Flag Argument(去标志位参数)

布尔参数表示两种行为的函数拆成两个命名函数:调用点自解释、内部分支消失;标志参数是典型的可读性侵蚀点,拆分成本通常很低。

场景book(customer, true) 之类的调用
做法拆成 book() / bookExpress() 两个入口
收益调用语义在函数名上自明

Java 示例

Java 示例
// 之前
deliveryDate(order, true)

// 之后
expeditedDeliveryDate(order)

易错点

  • 拆出的函数名不能体现差异:调用点依旧费解
  • 参数语义是数据而非行为:保留参数,不要过度拆分

数据来源与参考

  • 《重构》第 2 版 · 第 11 章(Remove Flag Argument)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌