Android Studio你不知道的快捷键(二)

Android Studio你不知道的快捷键(一)里面,主要讲述了一些窗口操作的快捷键还有补全参数提示等,这一篇会分享一些代码代码编辑的快捷键。(默认Keymap上文)

自动生成变量

作为一门静态类型语言,Java是有一定的类型推导能力的;那么你是否经常书写:

String testStr = "testStr";
List<String> testStrings = new ArrayList<String>();

其实大可不必写那些恼火的类型声明的,一看就知道testStr, testStrings就知道是什么类型,再这么干不就是废话么!好在IDEA给了我们这个能力。尝试一下这个快捷键吧,会给你惊喜。

  • Mac: Cmd + Alt + V
  • Win/Linux: Ctrl + Alt + V

有的童鞋可能会问了:我使用ArrayList, HashMap的时候,习惯类型声明为List,Map等接口,这个自动生成的类型声明还是具体的实现啊,怎么办?这一点IDE已经帮你想到了,试试shift + tab,他会给你一个可以选择的类型列表~

自动提取参数

有时候你正在写一个方法的时候发现。哎哟,这个变量最好是当作参数传递进来啊;要做成这么一件事,你必须把这个方法内部所有使用这个局部变量的地方替换,把所有调用这个函数的地方添加参数,繁琐至极!好了有了这个你可以随便玩了:

  • Mac: Cmd + Alt + P
  • Win/Linux: Ctrl + Alt + P

当然,如果你想保留原来的方法,只是搞一个参数不同的方法(重载)出来,可以在弹出的那个对话框里面打勾。

自动提取方法

写代码的时候是否会发现不知不觉的这个方法已经太长了,适合分解然后提取出一个个子方法;或者是重构的时候看到一个一两千的函数,你是不是头都大了?一般情况下,我们都是把要提取的代码copy出来,然后写一个方法(还要什么该死的方法签名)然后把这段代码复制进来;其实这个过程是机械的,完全可以由IDE完成:

  • Mac: Cmd + Alt + M
  • Win/Linux: Ctrl + Alt + M

如果想改变方法的签名,在对话框里面选择你需要的就可以了~

上面提到了三个快捷键其实是比较类似的,如何记忆呢?

  1. 首先组合键都是Cmd/Ctrl + Alt
  2. 然后提取变量Variable=V,参数Parameters=P,方法Method=M

内联变量/参数/方法

好了学会了上面那几个快捷键,万一玩high了,比如提取了太多的方法,想“弄回去”,该怎么办呢?这个操作叫他Inline..

  • Mac: Cmd + Alt + N
  • Win/Linux: Ctrl + Alt + N

上面那个图只是参考,其实不仅可以作用于变量,还可以是方法/参数,个人觉得方法inline比较有用。

万能重构键

静态类型语言重构起来相对容易的,但是通常修改一个地方会牵扯到很多别的地方,我们只有一处一处找到这些编译错误然后手动修复。其实有好多工作是可以自动完成的,比如删除某个方法;先确认有没有人调用(Alt + F7),没有的话把方法体删了,有的话去看看调用的地方再决定怎么办。

但是重构的操作实在是太多了!我们没有办法也没有必要一个个记住,知道这个快捷键即可,我叫他万能重构键:

  • Mac : Ctrl + T
  • Win/Linux: Ctrl + Alt + Shift + T

在Win/Linux上可以考虑把这个快捷键改一下键,一下按四个键臣妾很难做到啊。。

这个重构菜单每一个功能都可以自己去尝试一下,使用之后不好用你来打我。

重命名

好了介绍了那么多貌似很高端的玩意,来个大部分人都知道的吧。有时候你发现有个变量名字取得有问题,或者没文化的队友/自己单词拼错了咋办?需要把所有用到这个变量的地方重新命名,小case!

快捷键:shift + F6

OK, 这一期的分享就到这里。如果没有看过上一篇的可以移步: Android Studio你不知道的快捷键(一)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

Go Channel 详解

Channel是Go中的一个核心类型,你可以把它看成一个管道,通过它并发核心单元就可以发送或者接收数据进行通讯(communication)。

2592
来自专栏Jerry的SAP技术分享

ES6, Angular,React和ABAP中的String Template(字符串模板)

String Template(字符串模板)在很多编程语言和框架中都支持,是一个很有用的特性。本文将Jerry工作中使用到的String Template的特性...

1164
来自专栏更流畅、简洁的软件开发方式

见到了“公司”定义一个Company类,那么见到了“字段”是不是也可定义一个Column类?

  既然见到了公司,我们可以定义一个Class Company ,那么我们见到了字段,是不是也可以定义一个Class ColumnInfo呢? 公司的描述信息类...

2539
来自专栏逸鹏说道

Jupyter-Notebook版的博客园美化

文章汇总:https://www.cnblogs.com/dotnetcrazy/p/9160514.html

1692
来自专栏Android知识点总结

Android基于TCP的五子棋双人对战实现

1922
来自专栏北京马哥教育

python实现简单爬虫功能

iOS开发如果之前没接触过除了c和c++(c++太难了,不花个十来年基本不可能精通)的语言,第二门语言最好的选择就是Python.原因就是 1.语法简单 2.库...

3347
来自专栏LanceToBigData

XML(一)XML大揭秘

前言 每天都要学习很多新的知识,比你厉害的程序员比你还努力,那你混的下这口饭吗?所以不抱怨,坚持!接下来给大家分享的是xml。可能很多做开发的都遇到过xml, ...

2109
来自专栏lhyt前端之路

从单向到双向数据绑定0.前言1.单向数据(代表:react)2.观察者模式3.双绑的中间枢纽——Object.defineproperty(代表:vue)4. 脏值检测(代表:angular1)前面说

用户最满意的,无非就是界面的操作能实事反应到数据。而实现这种的可以有双向数据绑定、单向数据流的形式。双向数据绑定是,ui行为改变model层的数据,model层...

2034
来自专栏知道一点点

走进AngularJs(二) ng模板中常用指令的使用方式

  通过使用模板,我们可以把model和controller中的数据组装起来呈现给浏览器,还可以通过数据绑定,实时更新视图,让我们的页面变成动态的。ng的模板真...

1592
来自专栏PHP在线

PHP版的jQuery

个人认为,对于Web前端程序员和跟HTML和CSS打交道的人来说,jQuery是有史以来最伟大的发明。jQuery的出现使Web程序员的开发效率突飞猛进,不亚于...

3773

扫码关注云+社区

领取腾讯云代金券