工具的使用是人类区分和动物区别的关键。
——卡尔·马克思(Karl Marx)& 弗里德里希·恩格斯(Friedrich Engels)
一、引言
我们可以简单思考一下,为什么有的开发人员的开发速度会比一般人快? 换句话说,为什么有的人可以效率这么高?
个人理解无非以下几点:
- 项目熟悉度,大半个项目代码都是自己写的或仔细研读过;——提速30%
- 业务壁垒,往期从事的需求开发和业务内容相似性极高;——提速25%
- 开发经验,工龄积累下相当高的开发熟练度以及可复用代码;——提速20%
- 技术能力,对目标技术栈的认知深度远超他人;——提速15%
- 架构能力,优秀的架构设计可以节省许多重复工作;——提速10%
1-5点能力也是各个程序员的能力指标,多数情况下也是招聘面试考核的关注重点,在此便不再赘述; 6 即为本文的核心:
Tips:
- 此处的百分比不具有权威意义,仅仅是个人的大致估计;
- 此处估计的流程为传统开发流程,而非敏捷甚至是极限编程场景;
二、重要性分析
好像今天没做什么事,一天就结束了。
1. 具像化数据
最简单的例子,复制一行完全相同的代码在已有代码正下方需要多长时间?
- 路径一:抬手,握住鼠标,左键长按拖选,Command+C,Command+V,Enter,Command+V——3s
- 路径二:Command+方向键选中,Command+C,Command+V,Enter,Command+V——1-2s
- 路径三:Command+D——0.5s
该操作每天进行几十次,单一操作上是否就慢了几分钟。
2. 效能数据
或许各位存在一些疑问,为什么工具使用的提效水平是有区间 5%-30% 的?
简要提供一下个人评价标准:
- 强相关性工具:Android Studio、GitLab、Jenkins等——直接影响应用开发过程;
- 弱相关性工具:Copilot、Python脚本等——不使用也不影响应用开发;
也就是
三、直入正题
Android Studio
1. 快捷键
估计30%开发者常用的快捷键
-
Option + Up Arrow 逐渐增加当前选中的范围
-
Option + Down Arrow 缩小当前选中的范围
-
Command + Option + / 注释当前选中的内容
-
Command + Shift + - 折叠所有代码
-
Command + Shift + + 展开所有代码
-
Command + - 折叠光标所处位置代码
-
Command + + 展开光标所处位置代码
-
Command + Y 不跳转快速查看定义
-
Command + P 不跳转快速查看参数信息
估计50%开发者常用的快捷键
-
Command + O 自动格式化依赖项
-
Command + L 跳转目标行
-
Command + G 查找下一个匹配项
-
Command + Shift + G 查找上一个匹配项
-
Command + Shift + C 复制文件完整路径 (常用于Terminals命令)
-
Command + Shift + Up/Down Arrow 光标停留行上下移动
-
Command + Option + L 选定内容自动对齐(常在写完代码后配合Comman + A 全选使用)
估计80%开发者常用的快捷键
-
Ctrl + R 运行程序
-
Command + C 选中当前行 (复制妙用)
-
Command + X 删除光标所在行内容 (剪切妙用)
-
Command + / 注释当前行
-
Command + D 复制当前行内容到下一行
-
双击Shift 全局文件检索
-
Command + Shift + F 全局字段检索 (检索器带有锁定大小写/文件类型/连续字段匹配等筛选条件)
-
Command + Option + Left/Right 切换上一个/下一个跳转页面
-
Option + Enter 自动修正选项卡 (重写/简化) (Import多行灰色用不到的可以用此功能一键清除 不用一行行的删)
不会干不了开发的快捷键 嘿嘿
-
Command + C
-
Command + V
2. 堆栈分析
2.1 Thread.dumpStack()
在任意位置打印堆栈轨迹;
打日志定位问题时,必要情况下可以加上该代码打印触发逻辑时的堆栈轨迹;
2.2 Code → Analyze Stack Trace
可将日志复制后粘贴到其中进行分析;
常用于 Log / Sentry / Firebase 获取错误日志后 快速跳转目标代码位置;
3. 代码补全
Settings → Live Template
配置自定义代码补全,简单几个关键字,输出常用完整代码。
4. 布局检查器
Tools → Layout Inspector
在设计UI绘制的需求中,当绘制不出所需要的效果时,可以打开布局检查器,逐层校验各个环节是否存在问题。
- Component Tree:布局中视图的层次结构。
- Layout Display:按照应用布局在设备或模拟器上的显示效果呈现布局,并显示每个视图的布局边界。
- 布局检查器工具栏:布局检查器的工具。
- Attributes:所选视图的布局属性。
点击视图对应有问题组件的位置,在左侧层次结构中,逐层对照右侧视图属性是否正确,最终定位出问题所在进行修改。
5. 布局验证工具
右边栏 → Layout Validation
主要用于验证布局在不同分辨率设备中显示效果, 包含四种配置:
- Pixel Devices:预览布局在 Pixel 设备上的显示效果
- Custom:自定义要预览的显示配置,可从各种设置(包括语言、设备或屏幕方向)中进行选择
- Color Bind:为了方便色盲用户使用您的应用,通过常见色盲类型的模拟验证布局
- Font Size:验证各种字体大小下的布局,并通过使用较大的字体测试布局,改进适用于视力障碍用户的无障碍功能
轻松完成屏幕适配。
6. Logcat 查看技巧
6.1 去除多余信息
日志信息中常常有许多内容是我们不需要关心的,
此时可以点击左边栏的齿轮按钮 Logcat Header 图标移除这些信息,只保留一个TAG,Logcat界面就会清爽很多。
6.2 折叠信息
选中并右键点击那些多余且不关心的子字符串,点击 Fold lines like this 创建一个过滤器,
如右图,所有包含 Accessing 的 Log 被折叠,点击对应位置可再展开。
7. Debug 断点调试技巧
7.1 条件断点
我们把断点打到循环体里的某行代码,想看看循环到某一次时的运行状态。
条件为“true”,当代码命中这个条件时,就会停在这个断点!
7.2 日志断点
在运行到对应位置时获取想要查询的属性信息,而直接断点 Variables 菜单中的信息太多寻找较为麻烦,
会很自然的联想到使用日志输出所需信息,但这又回产生另一个问题:我们不希望把Log语句在代码中打得到处都是。
此时日志断点会派上用场,在右键断点的 Condition 框中点击 More。
7.3 异常断点
强大的Android Studio提供了异常断点的功能。帮助我们在调试运行的App遇到异常,能够先快速准确的定位到产生异常的地方,而非第一时间停止App的运行。
顶部菜单栏——Run——View Breakpoints (快捷键 Command + Shift + F8)
7.4 变量改值
当断点停在对应位置,可以右键点击需要改变的变量值,点击 Set Value 输入设定值,
令变量以设定值继续运行。
7.5 断点组
当调试时想禁用一些不需要使用的断点,可打开 View Breakpoint 界面,对断点进行分组,批量取消Enabled勾选。
7.6 前置触发断点
当想要某种情况发生后,再触发该断点查看具体属性。
可增加断点前置条件。
8. Bookmarks
不想把Todo打得到处都是,可增加本地书签:
- F3 标记光标所在代码行
- Command + F3 查看所有标记
- Option + F3 标记且添加数字等
9. IDE管理
File -> Manage IDE settings
保存自己的IDE配置,更换电脑一键同步;
通过Git进行配置:Settings Repository
- 在任意一个Git服务器新建一个仓库,比如github
- 输入Git仓库Url
- Overwrite Remote:将本地配置覆写到远程
- Overwrite Local:将远程配置覆写到本地
- Merge:合并本地和远程的配置
四、总结
高效使用 Android Studio,可在编译器提高开发效率,门槛低,上手快,无关技术,不受业务约束,通用性极强。
有事没事点一点Android Studio的菜单栏,试一试没用过的能力,偶尔会有新的惊喜。
上述仅列举了部分个人及融合团队其他人经验下的便捷使用方式,或许还有更多更厉害的便捷方式,还希望各位大佬能一起分享,共同提速,早点下班。