《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);
}
《Android Studio实战 快速、高效地构建Android应用》--三、重构代码的更多相关文章
- 《Android Studio实战 快速、高效地构建Android应用》--五、备忘录实验(1/2)
通过开发App熟悉Android Studio的用法 开发一款用于管理备忘事项列表的App,核心功能: 创建.删除备忘 将某些备忘标记为重要(左侧带颜色标签突出显示) 涉及:操作栏菜单.上下文菜单.用 ...
- 《Android Studio实战 快速、高效地构建Android应用》--四、Git入门
Git版本控制系统(VCS)是分布式的,仓库的每一个副本均包含项目的完整历史 安装Git 下载 下载地址:http://git-scm.com/downloads 选择适合自己操作系统的来下载 如果下 ...
- 《Android Studio实战 快速、高效地构建Android应用》--Android Studio操作
前言 摩尔定律:CPU的处理能力大约18个月翻一倍 Android&Java:想要在Android Studio中开发Android App,必须以充分了解Java为前提(Java流行的原因: ...
- 《Android Studio实战 快速、高效地构建Android应用》--二、在Android Studio中编程
代码折叠 Ctrl+数字加号展开光标处已折叠代码块 Ctrl+数字减号折叠光标处已展开代码块 Ctrl+Shift+数字加号展开窗口中全部代码 Ctrl+Shift+数字减号折叠窗口中全部代码 注释代 ...
- Android NDK开发 Android Studio使用新的Gradle构建工具配置NDK环境(一)
本文主要讲述了如何如何在Android Studio使用新的Gradle构建工具配置NDK环境,现在把相关的步骤整理出来分享给Android程序员兄弟们,希望给他们在配置NDK环境时带来帮助. 从An ...
- 拥抱 Android Studio 之一:从 ADT 到 Android Studio
http://kvh.io/cn/embrace-android-studio-migration.html 1. 拥抱变化,拥抱新事物 Android Studio(IntelliJ IDEA)vs ...
- Android studio:从Eclipse迁移到Android Studio【一】
转载:http://www.apkbus.com/forum.php?mod=viewthread&tid=255061&extra=page%3D2%26filter%3Dautho ...
- [Learn Android Studio 汉化教程]第一章 : Android Studio 介绍
注:为了看上去比较清晰这里只转载了中文 原地址: [Learn Android Studio 汉化教程]第一章 : Android Studio 介绍 本章将引导您完成安装和设置开发环境,然后你就可 ...
- 第二章:Android Studio概述(一)[学习Android Studio汉化教程]
Android Studio是一个视窗化的开发环境.为了充分利用有限的屏幕空间,不让你束手束脚,Android Studio 在特定的时间仅仅显示一小部分可用窗口. 除了一些上下文敏感的窗口和上下文 ...
随机推荐
- The Annual Summary Of 2019
Time is flying, it arrives at the end of year again. This is my first year working in PinDuoDuo inc ...
- 使用 Python 中 re 模块对测试用例参数化,进行搜索 search、替换 sub
自动化测试用例,如果一百个接口要在Excel写100个sheet表单,每个接口有10个字段,里面有5个都可能是变化的,需要使用参数化,先试用特定的字符进行站位,在构造参数时在进行替换占位符: 一.用力 ...
- HDU4734 F(x) 题解 数位DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4734 题目大意: 对于一个 \(n\) 位十进制数 \(x\) (\(A_nA_{n-1}A_{n-2 ...
- 1073 多选题常见计分法 (20分)C语言
批改多选题是比较麻烦的事情,有很多不同的计分方法.有一种最常见的计分方法是:如果考生选择了部分正确选项,并且没有选择任何错误选项,则得到 50% 分数:如果考生选择了任何一个错误的选项,则不能得分.本 ...
- 使用Theia——添加语言支持
上一篇:使用Theia——创建插件 Theia——添加语言支持 Theia中TextMate的支持 使用TextMate语法可以为大部分源文件提供精准的着色修饰,虽然这只是在语法级别上(没有语言本身的 ...
- matlab读取excel文件中的数据
1.读取sheet1中的所有数据 1.1首先我们建立一个sheet表,表名为‘111’ 1.2 默认这些文本以及数字都放在sheet1中,我们将此excel选入当前工作目录(必要步骤), 选入当前工作 ...
- config.xml写入和读取
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- Eclipse中安装Jetty服务器
1. 在eclipse中安装jetty适配器 方法一: (1) 打开 Windows -> Preference -> Server -> Runtime Environment , ...
- VScode(一):C/C++ & MinGW & Code Runner
目录 1 VScode配置安装 2 MinGW配置安装 2.1 MinGW下载安装 2.2 MinGW环境配置 3 VScode编译C/C++ 3.1 扩展插件安装 3.2 项目配置 3.2.1 配置 ...
- 修饰符new与override
new:在作为修饰符时,可以隐藏从父类的继承的成员. override:修改父类的方法.属性. 上代码比较清楚: using System; using System.Collections.Gene ...