天天看点

《Android Studio实战 快速、高效地构建Android应用》--三、重构代码

要成为高效的Android程序员,需要头脑灵活,能够在开发、调试和测试的过程中重构代码,重构代码最大的风险是可能会引入意外的错误,Android Studio通过分析某些具有危险性的重构操作来降低风险,并接着激活Find工具窗口,应该将所有重要的重构修改单独做一次Git提交,以便回退。

Refator this菜单(

Ctrl+Alt+Shift+T

):

《Android Studio实战 快速、高效地构建Android应用》--三、重构代码

重命名

在project窗口选中类文件,

Ctrl+Alt+Shift+T

唤出重构菜单,选择Rename,出现的对话框允许重命名类,以及该名称在注释、测试用例和继承类中所有出现的地方
《Android Studio实战 快速、高效地构建Android应用》--三、重构代码

修改签名

该操作允许修改方法的以下属性:可见性、名称、返回类型、参数、抛出异常

将光标置于方法名

Ctrl+Alt+Shift+T

唤出重构菜单,选择Change Signature

类型迁移

允许把一种Java类型改为另一种

移动

  • 移动源文件
    • 在project窗口拖拽源文件
    • 选中源文件,用重构菜单的Move项
  • 移动成员
    • 光标置于该行,用重构菜单的Move项,能够把成员从一个类移到另一个类中

复制

...

安全删除

Safe Delete在执行删除之前查找该资源的依赖

抽取

Extract有一系列操作:抽取变量、抽取常量、抽取字段、抽取参数、抽取方法

抽取变量

private String saySomething(){
        return "something";
    }
           
光标置于硬编码的"something"任意位置,

Ctrl+Alt+Shift+T

选择Extract的Variable(

Ctrl+Alt+V

),抽取本地变量并根据硬编码的字符串来命名它
private String saySomething(){
        final String something = "something";
        return something;
    }
           

抽取常量

Ctrl+Alt+C

抽取字段

会将一个本地变量转换为类中的一个成员
private Date getDate(){
        return new Date();
    }
           
光标置于Date,

Ctrl+Alt+Shift+T

选择Extract的Field(

Ctrl+Alt+F

)
public class Sandbox{

    private Date mDate;

    private Date getDate(){
        mDate = new Date();
        return mDate;
    }
}
           

抽取参数

抽取变量并将其作为所在方法的参数
private Date getDate(){
        return new Date();
    }
           

Ctrl+Alt+Shift+T

选择Extract的Parameter(

Ctrl+Alt+P

private Date getDate(Date date){
        return date;
    }
           

抽取方法

选择一行或多行连续代码并将它们置于一个单独的方法中
private String methodHello(){
        String greet = "hello";
        StringBuilder stringBuilder = new StringBuilder();
        for(int i=0; i<10; i++){
            stringBuilder.append(greet + i);
        }
        return stringBuilder.toString();
    }

    private String  methodGoodbye(){
        String greet = "Goodbye";
        StringBuilder stringBuilder = new StringBuilder();
        for(int i=0; i<10; i++){
            stringBuilder.append(greet + i);
        }
        return stringBuilder.toString();
    }
           
选中
StringBuilder stringBuilder = new StringBuilder();
        for(int i=0; i<10; i++){
            stringBuilder.append(greet + i);
        }
        return stringBuilder.toString();
           

Ctrl+Alt+Shift+T

选择Extract的Method(

Ctrl+Alt+M

《Android Studio实战 快速、高效地构建Android应用》--三、重构代码
扫描文件发现还有一个相同的代码块实例
《Android Studio实战 快速、高效地构建Android应用》--三、重构代码
@NonNull
    private String getGreet(String greet) {
        StringBuilder stringBuilder = new StringBuilder();
        for(int i=0; i<10; i++){
            stringBuilder.append(greet + i);
        }
        return stringBuilder.toString();
    }

    private String methodHello(){
        String greet = "hello";
        return getGreet(greet);
    }

    private String  methodGoodbye(){
        String greet = "Goodbye";
        return getGreet(greet);
    }
           

继续阅读