《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 在特定的时间仅仅显示一小部分可用窗口. 除了一些上下文敏感的窗口和上下文 ...
随机推荐
- 小小知识点(二十四)什么是5G
转自 https://www.ifanr.com/1149419 一个简单且神奇的公式 今天的故事,从一个公式开始讲起.这是一个既简单又神奇的公式.说它简单,是因为它一共只有 3 个字母.而说它神奇, ...
- JAVA读取yml配置文件指定key下的所有内容
先引入需要的依赖 <!--读取yml文件--> <dependency> <groupId>org.yaml</groupId> <artifac ...
- 基于js的APP多语言处理
本文出自APICloud官方论坛, 感谢论坛版主哼哼哈兮 的分享. 本期分享一个js的多语言处理插件i18n.js,此插件是基于JQuery.i18n.properties修改而来的. 实现的原理 ...
- 牛客网上的ST阶跃表
给你一个长为n的序列a和一个常数k 有m次询问,每次查询一个区间[l,r]内所有数最少分成多少个连续段,使得每段的和都 <= k 如果这一次查询无解,输出"Chtholly" ...
- Linux 编程题
1. 产生一个进程树,父进程有2个子进程,这2个子进程分别又有2个子进程,每个进程休眠5秒后退出,并在退出前打印自己的进程id号. # include<stdio.h> # include ...
- Dart语言学习(六) Dart 列表List数组
创建List : var list = [1,2,3,"Dart",true]; 创建不可变List : var list = const [1,2,3,"Dart&qu ...
- 14、python异常处理及断言
前言:本文主要介绍python中异常的处理及断言,包括异常类型.异常捕获.主动跑出异常和断言. 一.异常类型介绍 什么是异常?异常即是一个事件,该事件会在程序执行过程中发生,会影响程序的正常执行,一般 ...
- 什么是“跑面”呢? - ERSS耳斯百科:您的随身移动百科
跑面 [pǎo miàn] 跑面,是一个汉语词汇,拼音为pǎo miàn,英文名为Run-Noodles,最基本解释为人跑步去吃面,其意义还有多重深层解释. 中文名:跑面 英文名:Run-Noodle ...
- 总是在起头可是能怎么办呢 Python数据分析
目录 前言1 第1章准备工作5 本书主要内容5 为什么要使用Python进行数据分析6 重要的Python库7 安装和设置10 社区和研讨会16 使用本书16 致谢18 第2章引言20 来自bit.l ...
- initramfs打包集成rootfs到image镜像及linux rootfs的正常启动
最近的项目中需要在仿真机haps及VDK上集成rootfs,中间遇到一些问题,在此整理记录以备忘. rootfs里面集成的busybox版本1.29.3 (buildroot环境中自带) kernel ...

