1. 为什么全局变量是坏味道
全局变量的作用范围是全局,通常指类变量或单例等,可以在代码中任一角落修改的数据,而且没有任何有效的机制检测出全局变量修改的位置。因此全局变量引发的bug,都是一些诡异的bug,难以定位。
2. 重构全局变量的目标
目标就是尽可能的消除全局变量,非必要且必须,否则不要使用全局变量。
《重构》书中提到:
良药与毒药的区别在于剂量。少量的全局变量影响或许有限,但数量越多,处理的难度就会指数上升。因此即便只有少量的数据,我们也愿意将它封装起来。
3. 重构全局变量的技巧
我们可以通过封装变量
和 抽提函数
消除全局变量。
操作 | 快捷键 |
---|---|
抽取方法 | Ctrl + Alt + M |
移动静态成员 | F6 |
转换为实例方法 | Ctrl + Alt + Shift + T -> Move Instance Method 鼠标右键 -> refactor -> Move Instance Method |
抽取字段 | Ctrl + Alt + F |