zoukankan      html  css  js  c++  java
  • 《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);
        }
    
  • 相关阅读:
    (转)【web前端培训之前后端的配合(中)】继续昨日的故事
    ural(Timus) 1136. Parliament
    scau Josephus Problem
    ACMICPC Live Archive 6204 Poker End Games
    uva 10391 Compound Words
    ACMICPC Live Archive 3222 Joke with Turtles
    uva 10132 File Fragmentation
    uva 270 Lining Up
    【转】各种字符串哈希函数比较
    uva 10905 Children's Game
  • 原文地址:https://www.cnblogs.com/hhhqqq/p/12263708.html
Copyright © 2011-2022 走看看