重构实践(1)
2021-10-21 本文已影响0人
墨_0b54
本身是一个性能优化的需求,优化过程中发现这个实体类的查询很复杂,涉及到很多表,很多关系。
涉及到很多的嵌套查询,很多数据要作为参数在嵌套查询中传递,或者很多数据需要重复查询。
重构的想法:
- 构建一个查询的上下文类,将所有涉及到 这个超大实体的查询都放在上下文对象中,并实现懒加载。
- 在优化过程中,将嵌套的数据拆分到多个上下文类,将原本的整个上下文类根据实体的聚合关系进行拆分。
- 将实体数据逐渐重构移动到各个上下文中。
- 在这个过程中还发现一些几乎不变的数据,可以做成缓存,减少查询。
重构结束后,数据的获取被限制在上下文中,数据更有组织,然后查询的代码就不会散落在各个函数中,并且消除了null判断,查询流程清晰易理解。
再进一步,这个重构可以应用在当前项目里所有超大对象的查询里。