首页/开发/代码质量与评审速查/手法:Encapsulate Variable(封装变量)
重构手法62 条

手法:Encapsulate Variable(封装变量)

把裸字段变为访问器:先建 getter/setter 再逐步收紧可见性,为后续校验、惰性初始化、变更通知留出插入点;全局变量尤其值得封装。

步骤封装读 → 封装写 → 收紧可见性 → 添加约束
场景全局配置、单例状态、跨模块共享数据

Java 示例

Java 示例
// 之前:public static Config config;

// 之后
private static Config config;

public static Config config() {
    return config;
}

public static void setConfig(Config next) {
    Objects.requireNonNull(next);
    config = next;
}

易错点

  • 只加 setter 不收敛:约束与校验依旧缺失
  • 封装后到处用 setter 传数据:状态变更点依旧分散

数据来源与参考

  • 《重构》第 2 版 · 第 6 章(Encapsulate Variable)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌