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

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

Refator this菜单(Ctrl+Alt+Shift+T):

重构菜单

重命名

在project窗口选中类文件,Ctrl+Alt+Shift+T唤出重构菜单,选择Rename,出现的对话框允许重命名类,以及该名称在注释、测试用例和继承类中所有出现的地方

重命名

修改签名

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

将光标置于方法名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();
    }

光标置于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)

抽取方法

扫描文件发现还有一个相同的代码块实例

抽取方法提示

@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);
    }
原文地址:https://www.cnblogs.com/hhhqqq/p/12263708.html