如何通过搬移方法技巧减少类间变量依赖以优化面向对象重构?
- 内容介绍
- 相关推荐
本文共计679个文字,预计阅读时间需要3分钟。
移动方法(Move Method)的核心目的,并非单纯的‘移动代码’,而是让方法落在真正归属的类中——也就是它操作数据最多、逻辑最复杂的那个类。当一个方法频繁读取另一个类的字段,或大量依赖另一个类的状态来判断分支,这时说明它‘站错队’了。此时移动,可以直接切断不必要的变量依赖,让类职责更清晰、调用链更短、后续修改更安全。
看准三个信号:该搬了
不用等代码烂到改不动,这几个迹象一出现,就是搬移方法的好时机:
- 方法体内超过一半的变量访问,指向另一个类的字段(比如 company.getStatus()、movie.getType());
- 方法参数中,有多个来自同一外部对象(如同时传入 company 和 company.getAddress());
- 方法逻辑完全由外部对象的状态驱动(例如根据电影类型返回不同费用,但方法却在 Rental 类里)。
搬移时怎么处理变量依赖
原方法如果用了源类的字段,不能硬搬。
本文共计679个文字,预计阅读时间需要3分钟。
移动方法(Move Method)的核心目的,并非单纯的‘移动代码’,而是让方法落在真正归属的类中——也就是它操作数据最多、逻辑最复杂的那个类。当一个方法频繁读取另一个类的字段,或大量依赖另一个类的状态来判断分支,这时说明它‘站错队’了。此时移动,可以直接切断不必要的变量依赖,让类职责更清晰、调用链更短、后续修改更安全。
看准三个信号:该搬了
不用等代码烂到改不动,这几个迹象一出现,就是搬移方法的好时机:
- 方法体内超过一半的变量访问,指向另一个类的字段(比如 company.getStatus()、movie.getType());
- 方法参数中,有多个来自同一外部对象(如同时传入 company 和 company.getAddress());
- 方法逻辑完全由外部对象的状态驱动(例如根据电影类型返回不同费用,但方法却在 Rental 类里)。
搬移时怎么处理变量依赖
原方法如果用了源类的字段,不能硬搬。

