IntelliJ IDEA 的 Template ,Code F
前言
在开发时,很多时候都在写一些重复的代码,毫无疑问,确实会降低效率。带来的坏处也显而易见:
- 重复coding,代码上出错的概率加大。特别是有DeadLine的时候,没有完善的检查,出错的概率更大。
- 编码风格上的不一致,增加了review代码的成本,增加了以后维护代码的成本。
- 重复的劳动增加,导致没有工作的热情,既浪费了时间又消耗了精力和激情。
善用工具
“工欲善其事必先利其器”,好的编码工具以及使用技巧确实会提升我们编写代码的效率和更高质量的代码,这里就要推荐下IDEA(Anroid Studio是基于IntelliJ IDEA的)。
强大的代码生成利器(Live Templates)
当我们编写一些固定的格式的代码(如声明变量,logger等)这种小范围的代码生成,我们可以使用Live Templates。
-
比如IDE自带的缩写方法,我们只需要打几个简单的缩写就可以自动补全:
IDE自带 - 复杂用法:
参照代码生成利器:IDEA 强大的 Live Templates
文件代码模板(File and Code Templates)
文件代码模板可以简单理解为:我们在项目中创建某些类型文件时,就已经在对应这些新文件中预设了代码内容。
参考 如何在Android Studio中创建File Templates
更好的格式化代码
提交代码前必须格式化代码,格式化引用。
mac 下 : command + alt +l ; command + alt +o
window下: Ctrl+Alt+L ;Ctrl+Alt+O
这里代码提交时,会有一些团队的内部规则,如 if(conditon){},必须有后面的大括号,无论多行还是单行。
除了这些还有其他的可以并且值得探索的设置,不得不感慨IDE的设计者真的好厉害,我原本准备写一个插件完成这个功能,却发现他们已经集成了进去,赞一个!
if语句必须有{}
思路以及扩展
开始在做“if语句必须有{}”这个需求时:
一. 首先想到的是写一个IDEA 插件,通过定位到书写的代码;
- 运用JavaCC和EBNF(扩展巴科斯-诺尔范式,Extended Backus-Naur Formal)语法,再加上JJTree,把Java源代码解析成抽象语法树(AST)。
- 在其中找到if(condition) ,定位其位置,然后判断后面有没有有“{}”。
- 定位到源码的位置,插入“{}”。
二. 写一个python脚本,直接读写改变文件。原理和一是一样的。
可以看到确实很麻烦,然后我就研究了下这个IDEA的设置,发现了已经有实现了,不由的感慨,这样也节省了我很多时间。
但上面的思路也可作用到“IDE未实现而自己又有需求”这种情况,可以尝试一下。
如何更懒,更有效的工作
当然是要靠工具啦,脚本,插件,框架。
- 能找到现成的就用现成的;
- 现成的不够用就自己改改再用。
- 实在没有自己造一个轮子。
这里不建议“为了造轮子而造轮子”,毕竟github 上几千star的还是很值得借鉴的,毕竟大部分的人都还是有思考的。毕竟你的任务在于完成工作,不能太“舍本逐末”。