重构027 - 移除Getter

重构027 - 移除Getter

💡 原文英文,约1300词,阅读约需5分钟。
📝

内容提要

通过去除或替换getter,使用丰富行为的方法操作对象,可以减少耦合,增强封装性,符合“告知-不要询问”原则,从而提升对象智能性、代码可维护性和安全性。

🎯

关键要点

  • 通过去除或替换getter,使用丰富行为的方法操作对象,可以减少耦合,增强封装性。
  • 遵循“告知-不要询问”原则,使对象更智能,提升代码可维护性和安全性。
  • 识别暴露内部状态的getter,移动使用getter的行为到对象内部。
  • 创建意图明确的方法来执行操作,避免使用get前缀。
  • 重构后的代码隐藏实现细节,允许内部表示的变化而不影响客户端代码。
  • 消除getter链,防止违反德梅特法则,增强对象的验证和业务规则执行能力。
  • 移除getter使代码与现实之间的对应关系更紧密,增强代码的直观性。
  • 框架和库可能需要getter方法进行序列化/反序列化,遗留代码库中的getter使用可能难以一次性重构。

延伸问答

移除getter的主要好处是什么?

移除getter可以减少耦合,增强封装性,使对象更智能,提升代码的可维护性和安全性。

如何识别需要移除的getter?

识别暴露内部状态的getter,并找到代码库中所有getter的使用情况。

移除getter后,如何更新代码?

将使用getter的行为移动到对象内部,并创建意图明确的方法来执行操作,更新代码以使用新方法。

移除getter会带来哪些风险?

最大的风险是getter返回可变对象或集合,可能导致客户端代码修改这些对象,因此需要通过全面测试确保行为未改变。

什么是“告知-不要询问”原则?

该原则强调对象应通过执行操作而不是暴露内部状态来响应请求,从而使对象更智能。

移除getter如何改善代码与现实的对应关系?

移除getter使对象更像现实世界中的实体,通过执行操作而不是暴露数据,增强了代码的直观性和可理解性。

➡️

继续阅读