在一个 spring-boot + mybatis + thymeleaf 的项目中,为了全局更改成员变量 name 的名称,我使用了 快捷键来 rename 它:
public class Test {private String name;}
然后下边的搜到了很多用例,我按照以前的习惯,直接 do refactor ,然后我就发现这次它用了很长时间,内心感到 一丝丝不妙。
于是我随便打开一个目录看了下,完了,好多不归我负责的文件被修改了,主要是三类文件:
1. 被注释的代码。凡是被注释的代码中含有 getName 、setName 的通通被修改,不论与 Test 类 有无关系。
2. mapper.xml 文件。都是 mybatis 的映射文件,与 上条一样,无论有无关联均被修改。
3. html 文件。所有标签中 name 属性都被修改!
以上三类共计 350+ 文件被修改。。。然后我就悲催地 使用 idea history 功能来一个一个文件地来恢复修改。
后来发现 git 有 revert 功能,于是使用revert 将大部分改动恢复了,剩下一些情况稍复杂的自己一个个改了回来。
尽管如此,最后发现也耗费了我将近一个半小时的时间。
对于这次的事故,我后来仔细想了想,大概与使用快捷键有关:频繁重命名,根据经验直接do refactor,没有看清楚更改的范围。自从这次操作后,我在重命名变量时,一般都会在弹出菜单 -> refactor -> rename 去做,这样虽然操作变得繁琐,但是增加了成本后,重命名时就会变得更小心,看清了在确定。