PHP重构:数据重构策略与accessor原则

0 下载量 88 浏览量 更新于2024-08-30 收藏 68KB PDF 举报
在PHP杂谈系列《重构-改善既有代码的设计》的第三部分,作者深入探讨了数据重构的重要性。这一章节聚焦于如何处理和改进代码中数据的访问和组织方式。首先,作者提到了两种常见的设计模式:直接访问字段(Field)和通过函数(Accessor)访问字段,引发了关于哪种方式更优的讨论。 直接访问字段的优点在于代码简洁,易于理解,但可能导致Client与值域之间的紧密耦合,特别是在大规模项目中。为了解决这个问题,引入取值/设置函数(SelfEncapsulateField)可以增强封装性,实现懒加载(lazyInitialization),即只有在实际使用时才初始化,从而增加灵活性。 另一方面,作者建议遵循团队规范或个人偏好,倾向于使用直接访问字段,但会在其带来的问题影响代码可维护性时转而采用Accessor方法。马丁(可能是某种重构理论的倡导者)举了一个例子,当在子类中需要改变超类字段的值,这时使用SelfEncapsulateField就显得尤为重要,因为它能确保领域模型的完整性。 接着,作者讨论了ReplaceArraywithObject的情况,当一个数组更像是一个数据结构时,将其转换为对象可以提升数据结构的清晰度。这样做允许将额外的数据和行为封装在对象内部,避免了早期可能用基本数据类型表示简单行为导致的复杂性。 在进行数据重构时,区分domainclass(处理业务逻辑的核心类)和presentationclass(负责数据表现形式的类)是关键,它们之间通常是单向(unidirectional)或双向(bidirectional)关联,以保持数据模型的清晰和一致性。 最后,作者提到在日常实践中,他们倾向于将字段设为private,仅通过SelfEncapsulateField提供对外访问,以维护代码的内聚性和降低耦合。这样的重构策略有助于确保代码的可读性和可扩展性,同时兼顾了性能和灵活性。 总结来说,这一篇章围绕着PHP重构中的数据组织和访问策略,强调了如何通过使用Accessor、SelfEncapsulateField、对象替换数组等技术来提升代码的可维护性和设计质量。同时,也指出了根据团队规范和个人经验在具体场景中权衡和选择合适重构策略的重要性。