《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 在特定的时间仅仅显示一小部分可用窗口. 除了一些上下文敏感的窗口和上下文 ...
随机推荐
- Python第一天哇
iDLE的清除方法ctrl+: 当然,你首先要把网上百度到那个文件按照步骤加上去啦 我百度的=-=:https://www.cnblogs.com/stuqx/p/7291933.html Pyth ...
- 洛谷P1037 产生数 题解 搜索
题目链接:https://www.luogu.com.cn/problem/P1037 题目描述 给出一个整数 \(n(n<10^{30})\) 和 \(k\) 个变换规则 \((k \le 1 ...
- 2013 ACM-ICPC亚洲区域赛南京站C题 题解 轮廓线DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4804 题目大意 给你一个 \(n \times m\) 的矩形区域.你需要用 \(1 \times 1 ...
- 1044 火星数字 (20 分)C语言
火星人是以 13 进制计数的: 地球人的 0 被火星人称为 tret. 地球人数字 1 到 12 的火星文分别为:jan, feb, mar, apr, may, jun, jly, aug, sep ...
- Mysql备份与恢复(2)---逻辑备份
数据库及时备份可以帮助我们在数据库出现异常宕机时及时的使用备份数据进行恢复工作,将因为数据库宕机产生的影响降低到最小.上一篇针对使用xtrabackup工具进行物理备份和数据恢复做了一个详细讲解,本篇 ...
- Java手写数组栈
public class ArrayStack{ private String[] items; //数组 private int count; //栈内元素 private int n; //栈大小 ...
- 如何修改Docker已运行实例的端口映射
如何修改Docker已运行实例的端口映射 Docker的端口映射,往往出现在两个阶段需要处理: 1.是在docker启动前就已经确定好,哪个docker实例映射哪个端口(往往这个情况比较,需要提前做规 ...
- 侠说java8--Stream流操作学习笔记,都在这里了
前言 首次接触到Stream的时候以为它是和InputStream.OutputStream这样的输入输出流的统称. 流和集合的前世今生 概念的差异 在开发中,我们使用最多的类库之一就是集合.集合是一 ...
- Date类与日期格式
Date类概述: 表示特定的瞬间,精确到毫秒. Date()分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒).Date(long date)分配 Date 对象并初始化此对象,以表 ...
- C++Primer第五版 3.5.1节练习
练习 3.27:假设txt_size是一个无参数的函数,它的返回值是int.请回答下列哪个定义是非法的?为什么? Unsigned buf_size = 1024; (a) int ia[buf_si ...

