还是因为工作原因,遇到了一个刚入门的小盆友。昨天下午我看着他对着工程吭哧吭哧折腾了好久,好奇过去看看,原来是他写的一个方法把feature
写成了fature
,还在整个项目各个位置调用方法,由于偷懒,该方法涉及的成员变量、局部变量也都Ctrl-C,Crtl-V成了fature
,所以他不亦乐乎的自己玩了一下午。
虽然疫情导致大家需求都不紧了,能够找点事儿填补一下时间也挺好的,但是有这功夫,刷个leetcode不好么。遂给他演示了几个AS常用的重构工具。
改名
首先是最常用的功能——改名。
使用方法是将光标放置在所想要修改的对象、方法上,右键唤出菜单,选择Refactor
-Rename
。将想要修改的结果输入其中,然后回车,就可以完成改名,并同步修改依赖其的地方,十分方便。在windows系统里快捷键是shift+F6
,严重建议记住这个快捷键,当没活儿干又想提交代码时,可以用这个修改代码规范问题。
![](https://i-blog.csdnimg.cn/blog_migrate/523aad1dbb1b3cc178158e5df0138812.png)
另外如果想要改包名和类,可以在目录侧找到想要改名的目录或者文件,同样右键Refactor
-Rename
即可完成改名。
抽象方法
抽象方法通常用在在第一遍草草写完业务后,整理代码时非常实用的一个工具。通常圈住3-5行逻辑块然后,右键Refactor
-Extract Method
。
![](https://i-blog.csdnimg.cn/blog_migrate/92f43c32d6fe2895eb6d7985ab258731.png)
有赋值的IDE会智能的帮你决定返回值类型并定义传入参数,比如像下面这段代码,他就会自动抽象为getView()
抽象前
AlertDialog.Builder alertDialog = new AlertDialog.Builder(activity, R.style.Theme_AppCompat_Dialog);
View view = View.inflate(activity, R.layout.layout_dialog, null);
mDialog = alertDialog.setView(view).create();
mDialog.setCancelable(false);
抽象后
View view = getView(activity);
private View getView(Activity activity) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(activity, R.style.Theme_AppCompat_Dialog);
View view = View.inflate(activity, R.layout.layout_dialog, null);
mDialog = alertDialog.setView(view).create();
mDialog.setCancelable(false);
return view;
}
抽象变量
抽象变量的玩法就比较多了,可以抽象局部变量、成员变量、常量、入参等。他的用法同样是选中想要抽象的代码,右键Refactor
-红框中这四个,其中抽象常量(Introduce Constant...
)最常用,一般的代码规范都会要求魔鬼数字,在review代码时,看到硬编码的数字、字符串顺手一个抽象,在命个名。好的代码习惯就是这么点滴形成的。
![](https://i-blog.csdnimg.cn/blog_migrate/5c3b8c084b0e11bb400169f45f0baba9.png)
快速插入
虽然这个不是重构工具,但也是Android Studio的一个很有用的工具,能够给开发者节省海量工作。比如在写模型类时,会有很多私有变量想要暴露出去,这时候我们就需要构造大量的get()
、set()
方法,用快速插入就可以一键搞定。除了这个,还能够插入构造方法、哈希和判等、toString()
等很多常用方法。快捷键是Alt+Insert
,裂墙建议记住。
![](https://i-blog.csdnimg.cn/blog_migrate/8225c156bc7b6dbf9b0ea457fc86f61e.png)