💡
原文英文,约1300词,阅读约需5分钟。
📝
内容提要
通过去除或替换getter,使用丰富行为的方法操作对象,可以减少耦合,增强封装性,符合“告知-不要询问”原则,从而提升对象智能性、代码可维护性和安全性。
🎯
关键要点
- 通过去除或替换getter,使用丰富行为的方法操作对象,可以减少耦合,增强封装性。
- 遵循“告知-不要询问”原则,使对象更智能,提升代码可维护性和安全性。
- 识别暴露内部状态的getter,移动使用getter的行为到对象内部。
- 创建意图明确的方法来执行操作,避免使用get前缀。
- 重构后的代码隐藏实现细节,允许内部表示的变化而不影响客户端代码。
- 消除getter链,防止违反德梅特法则,增强对象的验证和业务规则执行能力。
- 移除getter使代码与现实之间的对应关系更紧密,增强代码的直观性。
- 框架和库可能需要getter方法进行序列化/反序列化,遗留代码库中的getter使用可能难以一次性重构。
❓
延伸问答
移除getter的主要好处是什么?
移除getter可以减少耦合,增强封装性,使对象更智能,提升代码的可维护性和安全性。
如何识别需要移除的getter?
识别暴露内部状态的getter,并找到代码库中所有getter的使用情况。
移除getter后,如何更新代码?
将使用getter的行为移动到对象内部,并创建意图明确的方法来执行操作,更新代码以使用新方法。
移除getter会带来哪些风险?
最大的风险是getter返回可变对象或集合,可能导致客户端代码修改这些对象,因此需要通过全面测试确保行为未改变。
什么是“告知-不要询问”原则?
该原则强调对象应通过执行操作而不是暴露内部状态来响应请求,从而使对象更智能。
移除getter如何改善代码与现实的对应关系?
移除getter使对象更像现实世界中的实体,通过执行操作而不是暴露数据,增强了代码的直观性和可理解性。
➡️