美文网首页中转站Android Studio 技巧
Android Studio 技巧之【Rename】

Android Studio 技巧之【Rename】

作者: 码客胡撸 | 来源:发表于2017-04-08 17:18 被阅读0次

    快捷键

    Shift + F6

    Android Studio 里重命名变量、字段、方法、类、包的快捷方式。

    描述

    在代码中重命名变量、字段、方法、类、包,是一件要小心对待的工作,所有的修改一定确保对上下文有意义。

    确保对上下文有意义一般分两种情况。

    1、要保证全部改名。

    无论要改名的是变量、字段、方法、类还是包, 这些变量、字段、方法、类、包可能已经在整个程序的多处被引用了,所以要改名必须在所有的地方全部修改,不能遗漏。

    2、要做有意义的修改,不能无脑似地见了和要改名的字符串一样的字符串就改。

    一个和要改名的变量名相同的字符串,可能在代码的别的地方仅仅是另一个字符串的一部分,这种情况就不能修改。

    针对第一种情况,似乎用全文替换可以快速完成改名的工作。但是全文替换,是见了相同的字符串就改,这样的话,对第二种情况又不合适。这种粗暴的替换有可能修改了不该修改的字符串,造成很隐蔽的难以发现的BUG。

    所以,要改名的话,一般是用在整个工程文件中或者当前文件中全文查找的方式,找出所有可能要改名的字符串,一个个看,一个个修改,该改的改,不该改的地方不改。

    但是细致是一方面,在细致的同时也要追求工作效率。在Android Studio中用Shift + F6 快捷键可以让我们高效地完成重命名的工作,而且该操作能确保重命名对上下文有意义,不会无脑替换掉所有文件中的名字。

    虽然这个快捷键功能很强大,但却不是用了以后直接按Enter那么简单,依然需要手工干预,根据不同的情况选择哪些改,哪些不改。

    所以如果你已经看到这里,希望你认真地看下去。和前面文章中介绍的哪些快捷键不一样,这个快捷键用好了,可以极大地提高效率,但是如果用不好,带来的麻烦甚至多过其带来的方便。

    使用

    下面看示例代码:

    上图的代码中首先定义了一个全局变量sVar,这个全局变量sVarmethod2method3都被引用。

    method1中又定义一个本地变量,名字也叫sVar

    在每个方法中还有被“” 括起来的文本字符串里的sVar,如method2method3 Log语句里的"sVar: "以及method1里的本地变量sVar的值Local sVar.

    现在要将全局变量sVar改名为gVar.

    例子1

    仅仅将全局变量sVar改名为gVar,其它所有注释和文本字符串里的同名字符串全部不改变。

    也就是改变全局变量sVar的定义的部分和在其它地方引用它的部分,即上图中高亮的的sVar声明处,method2method3Log语句中引用sVar的三个地方。

    1、将光标定位到public String sVar行中的sVar
    ,按 Shift + F6

    图中可以看到,public String sVar行中的sVar被红框围住,代表要对其改名,其它两个引用处也被高亮选择了。

    屏幕上同时还有一个弹窗,弹窗里上面四行是给出的建议修改的名称。这时候其实直接改名后按Enter即可,但是强烈建议不要这样做。

    保险的做法是根据最下面的提示Press Shift+F6 to show dialog with more option,继续按 Shift + F6

    2、再次按 Shift + F6

    又出现一个弹窗,弹窗里的文本框是让我们输入要改的名字。

    重要的是下面两个Checkbox

    第一个是Sesrch in comments and strings, 意思是在注释和文本字符串里搜索。 如果选择了这个选项,那么所有在注释和文本字符串里出现的sVar都会被包括进来修改。

    第二个是Search for text occurrences, 意思是在字面意义上的搜索。 这个选项没有什么用,因为 Shift + F6 实际上是一个代码重构的快捷键,不是做文本替换的命令。所以选不选这个选项都不起作用。

    在这个例子中,我们不想修改注释和文本字符串里的同名字符串,所以我们不选Sesrch in comments and strings这个选项。

    3、将这两个选项前的Checkbox都清空。并且将文本框里的sVar改为gVar

    4、点击Refactor按钮。

    现在可以看到,应该修改的三个地方全部被修改好了。

    文本字符串里的sVar没有被修改,因为我们没有选择Sesrch in comments and strings这个选项。

    method1里的sVar则原封不动。因为method1里的sVar实际上是另外一个本地变量,和要修改的全局变量仅仅是名字相同,完全是两回事。

    这就是符合上下文意义的正确的改名,确保了全部修改和正确的有意义的修改。

    动画演示

    如果你看到这里,应该已经了解了Shift + F6 的方便和高效,但是聪明的你也应该注意到,在给全局变量sVar改名的同时,其实method2method3里的两个Log语句中的字符串sVar也应该同时修改。不然的话,虽然改名没有造成程序运行的BUG,但是却造成了功能上的BUG。

    如果不同时修改两个LOG语句中的sVar, 那打印出来的LOG就指鹿为马了,因为现在sVar已经改名叫gVar了。

    下面我们就用第二个例子来看,怎么做到一次完美的改名。

    例子2

    将全局变量sVar改名为gVar,同时修改所有相关注释和文本字符串里的sVar

    1、和例子1一样,将光标定位到public String sVar行中的sVar上,按Shift + F6

    2、再次按Shift + F6

    3、这次因为要修改文本字符串里的sVar。所以我们勾选
    Sesrch in comments and strings, 意思是在注释和文本字符串里搜索。 选择了这个选项,那么所有在注释和文本字符串里出现的sVar都会被包括进来修改。

    同时在文本框中将sVar改为gVar

    4、点击Refactor按钮。

    这次在Android Studio的下部出现了一个如图的窗口。

    这个窗口里,标识出了所有可能需要修改的地方,

    最上面的如上图的部分,说明了要改名的变量。

    中间如上图的这一块说明,在55行method2的Log语句引用了sVar,需要修改。 下面method3中也有一个引用。可以点击向右的箭头将其打开,查看详细的信息。

    上面这两处是我们肯定要修改的,所以我们不去管它。

    因为这次我们选择了Sesrch in comments and strings,所以我们最关心的是最下面的部分,看下图。

    这是说sVar在注释,文本字符串和非代码文本中出现了三次。 很明显,这是我们要仔细查看并处理的地方。

    5、点击该行文字前面的向右的箭头,将其打开。

    看到了吧,这里是说在method1method2method3中的注释或者文本字符串中各有一个sVar.

    6、点击第一个method1前的箭头将其打开。

    这里指明在50行的String sVar = "Local sVar";里有一个sVar

    这里我们不需要修改。所以必须将其标识为不修改。

    7、在method1() 1 usage这一行上右击,弹出下面的弹窗。

    8、在弹出的菜单上有ExcludeRemove这两个选项。随便点击任意一个都可以。这里我们点击Remove将其移除。

    现在看到屏幕上只有method2method3了,分别标明在55行和59行各有一个LOG语句,其中有sVar可能需要修改。

    而这两个是我们确实需要修改的。所以不做任何动作,继续保留。

    9、点击Do Refactor按钮。

    现在,可以看到最后的结果完全符合我们的要求。

    全局变量的定义,两个引用以及在method2method3中两个LOG语句里的文本字符串中的sVar都被正确地改成了gVar

    动画演示

    总结

    Shift + F6 快捷键,可以快速重命名变量、字段、方法、类、包。并且可以确保重命名对上下文有意义,不会无脑替换掉所有文件中的名字。

    但是使用该快捷键需要格外的细心,需要根据代码不同的情况手工加以处理。


    更多Android Studio技巧

    简书

    Android Studio 技巧之【Join Lines and Literals】

    Android Studio 技巧之【Delete Line】

    Android Studio 技巧之【Move Methods】

    Android Studio 技巧之【Duplicate Line】

    Android Studio 技巧之【Move Lines Up Down】

    Android Studio 技巧之【Sublime Text Multi Selection】

    Android Studio 技巧之【Column Selection】

    Android Studio 技巧之【Extract Parameter】

    Android Studio 技巧之【Extract Constant】

    Android Studio 技巧之【Extract Method】

    Android Studio 技巧之【Extract Field】

    Android Studio 技巧之快速抽取变量【Extract Variable】

    Android Studio 技巧之【Extract Resource】

    相关文章

      网友评论

        本文标题:Android Studio 技巧之【Rename】

        本文链接:https://www.haomeiwen.com/subject/fralattx.html