• 《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);
        }
    
  • 相关阅读:
    功能:Java注解的介绍和反射使用
    功能:@Vaild注解使用及扩展
    转载:微信小程序view布局
    功能:Java8新特性steam流
    功能:Linux运行jar包Shell脚本
    转载:Windows使用tail -f 监控文件
    转载:java.math.BigDecimal 比较大小
    问题:跨域及解决方案
    基于 @SelectProvider 注解实现无侵入的通用Dao
    SpringBoot中的异步操作与线程池
  • 原文地址:https://www.cnblogs.com/hhhqqq/p/12263708.html
Copyright © 2020-2023  润新知