快速重构

重构是开发时的常用功能,不论是开发新的功能,还是完善旧的功能,开发者都需要进行大量的重构工作。

重构入口

当选择一个代码片段准备重构时,Android Studio提供了一个快捷的重构入口,如图3.47所示。

快速重构 - 图1 图3.47 重构入口

通过快捷键“Control+T”可以打开这个重构入口,或者通过单击鼠标右键,选择“Refactor”调出这个界面,如图3.48所示。

快速重构 - 图2 图3.48 重构选项

在这里基本上可以找到所有的重构入口,例如常用的Rename操作等。

Surround With

在开发中,开发者经常要对某行代码进行重构,例如增加判空的if条件,或者是增加try catch捕获异常。那么可以使用快捷键“Command+Option+T”来进行操作,如图3.49所示。

快速重构 - 图3 图3.49 Surround With

当执行了这个快捷键之后,会弹出如图3.49所示的界面,选择相应的Surround类型,就可以快速将该Surround类型作用到选择的代码上。

快速提示

Android Studio是一款非常智能的IDE,它的智能不仅仅在于它强大的快捷键支持和强大的功能支持,更在于Android Studio在代码编写中提供的各种快捷提示,它可以根据代码场景的不同,提示不同类型的修改意见。

通过快捷键“Option+Enter”可以迅速调出快速提示。例如当一行代码写完,还差一个分号时,通过快捷键“Option+Enter”快速提示,Android Studio可以快速帮你补全分号、换行,并格式化该行代码。再例如,你可以先写一个还未生成的方法,通过快捷键“Option+Enter”快速提示来让Android Studio帮你生成这个方法,如图3.50所示。

快速重构 - 图4 图3.50 快速提示1

再例如,开发者有时候会在代码中写一些if…else if…这样的条件判断语句。但是在重构的时候,你很可能想把它换成switch语句,那么通过Android Studio的快速提示,这样的转换就是完全智能的。只要在if上使用“Option+Enter”快速提示即可,如图3.51所示。

快速重构 - 图5 图3.51 快速提示2

如图3.51所示,选择“Replace‘if’with‘switch’”即可迅速完成这样的重构。另外,当你的代码出错时,通过“Option+Enter”快速提示,可以让Android Studio提示出错误的方法。对于一些系统性的错误,Android Studio都可以给出准确的修改提示,有了这个功能,几乎相当于身边多了个高级程序员在协助你一起开发,简直是不能更方便了。

快速国际化

在Android项目中进行项目的国际化,是通过建立不同语言的strings.xml文件来实现的,在Android Studio中,IDE提供了translation editor帮助开发者快速创建国际化文件。

要使用这个功能,开发者只需要打开strings.xml文件,打开右上角的提示“Open editor”,即可打开translation editor。在translation editor中,选择左上角的“地球”图标,即可打开资源国际化选择器,如图3.52所示。

快速重构 - 图6 图3.52 资源国际化

选择相应的语言,即可在目录下产生该语言对应的资源文件,如图3.53所示。

快速重构 - 图7 图3.53 资源国际化文件夹

这样就非常方便地完成了资源国际化的创建工作,同时IDE还人性化地用不同国旗来区分不同的语言。

Extract的妙用

Extract在重构代码时是非常有用的,例如将一段重复的代码抽出来作为一个方法,如图3.54所示。

快速重构 - 图8 图3.54 提取方法

通过Extract Method,可以将一个代码段抽出作为一个方法,并且可以设置该方法的访问类型,如图3.55所示。

快速重构 - 图9 图3.55 生成提取方法信息

那么Extract是不是仅仅可以重构Java代码呢?当然不是,对于XML布局文件,Extract同样可以发挥巨大的作用。例如一个布局的XML文件,要抽取它的一些属性作为Style,供其他View进行复用,那么就可以直接在这个View的XML布局代码中,执行Extract-Style,如图3.56所示。

快速重构 - 图10 图3.56 提取Style

在弹出的界面中设置抽取的Style的名字和要抽取的属性即可,如图3.57所示。

快速重构 - 图11 图3.57 生成提取Style信息

Extract不仅可以抽取Style,还可以抽取布局Layout,使用方法基本一致,这里就不再演示了。

在代码中,Extract可以提取各种变量、参数、常量。例如,将一个局部变量提取为类的成员变量,将一个字符串的常量提取为全局的常量(你可以选择提取到这个类本身中,或者提取到新的类,例如常量类中)。而且提取后,Android Studio会非常人性化地帮你以合适的命名规则命名,例如成员变量的m、常量全部大写,等等。

Stucturally Search

Structurally Search是Android Studio中一个非常重要的功能。通过Find Action方法,可以快速打开该功能,如图3.58所示。

快速重构 - 图12 图3.58 打开Structurally Search

Structurally Search界面如图3.59所示。

快速重构 - 图13 图3.59 Structurally Search

在编辑区域,开发者可以编辑各种要搜索的代码。而最关键的是,可以使用“$xxxx$”标志进行匹配搜索,如图3.59所示,通过“$time$”进行了任意变量值的匹配。这样搜索后,就可以发现在不同文件中的不同变量的something()方法,如图3.60所示。

快速重构 - 图14 图3.60 Structurally Search搜索结果

在搜索结果区域可以展示所有的搜索结果,并根据自己的需要进行修改。