Redian新闻
>
IDEA 使用技巧,让你的代码飞起来!

IDEA 使用技巧,让你的代码飞起来!

公众号新闻

程序员软件库

Java 开发过程经常需要编写有固定格式的代码,例如说声明一个私有变量,logger或者bean等等。

对于这种小范围的代码生成,我们可以利用 IDEA 提供的 Live Templates功能。刚开始觉得它只是一个简单的Code Snippet,后来发现它支持变量函数配置,可以支持很复杂的代码生成。

基本使用

IDEA 自带很多常用的动态模板,在 Java 代码中输入fori,回车就会出现

for (int i = 0; i < ; i++) {

}

按Tab可以在各个空白处跳转,手动填值。


自定义 Template

官方自带模板毕竟不能满足我们个人编码风格的需要,Live Templates提供了变量函数的方式供我们自定义。

简单用法

新增自定义模板,首先需要填写触发单词(即 Abbreviation),描述是可选的,然后定义模板的上下文,点击define选择Java,这样在编辑 Java 的时候就会触发当前模板,定义完上下文之后,就可以填写模板了。

下面列举几个我常用的简单模板

==========
<out>
----------
System.out.println($END$)
==========
<pfs>
----------
private final static String $varName$ = "$var$";`
==========
<privateField>
----------
/**
 * $COMMENT$
 */

@Getter
@Setter
private $TYPE$ $NAME$;
==========
<main>
----------
public static void main(String[] args) {
     $END$
}
==========

模板支持变量的定义,使用$$包围的字符表示一个变量。$END$是一个特殊的预定义变量,表示光标最后跳转的位置。每个变量的位置都可以跳转过去。

高级用法

如果你用过 vim 的Code Sinppet插件,你会发现模板里面是可以执行函数的,强大的 Live Templates当然也支持,而且 IDEA 能够感知代码的语义,例如说当前编辑的函数的参数。但这一点就能够让我们玩出花来。我们从易到难来研究模板函数的功能。

前面我们提到的变量可以绑定函数,配置方式如上图所示。

  • 快速声明变量

声明变量是一个常用的操作,特别是需要声明变量需要加注解,注释的时候,这些代码写起来就很枯燥。下面是我定义的模板:

<osgiRef>
----------
/**
 * $END$
 */

@OsgiReference
@Setter
private $TYPE$NAME$;

乍一看这个模板跟我上面定义的privateField差不多,唯一的不同在于我给这些变量绑定了函数。

  • clipboard():返回当前粘贴板的字符串

  • decapitalize():将输入的字符串首字母变为小写

下面我们演示一下,我们先拷贝当前类名,然后输入osgiRef

  • 快速声明 logger

声明 logger 也是一个常用的操作,上面我们是利用了粘贴函数来快速声明变量,现在我们来利用另一个函数className(),顾名思义,它的作用就是返回当前类名。

<logger>
----------
/** logger */
private static final Logger LOGGER = LoggerFactory.getLogger($CLASS$.class);

  • 最强大的 groovyScript()

如果说上面用到的函数提供的能力有限,不够灵活,那么groovyScript()提供了一切你想要的能力,它支持执行 Groovy 脚本处理输入,然后输出处理后的字符串。

groovyScript("code", ...)

| code |   一段Groovy代码或者Groovy脚本代码绝对路径 |
|
  ... | 可选入参,这些参数会绑定到`_1, _2, _3, ..._n`, 在 Groovy 代码中使用。|

下面我们来看一下它的实际应用。

  • 快速 bean 配置

新增一个服务都要在 Spring 中注册一个 bean,一般这个配置无非就是将指明id和class,由于我们是在 xml 中配置,所以不能利用className()函数,但是我们可以利用clipboard()函数获取到类的全引用,在 IDEA 中我们直接右键类名,点击Copy Reference就行。然后执行 groovy 脚本获取类名。

<bean>
----------

<bean id="$id$" class="$REF$" />

id绑定decapitalize(groovyScript("_1.tokenize('.')[-1]", clipboard())),首先取clipboard()的值得到类的全引用,然后执行 groovy 代码_1.tokenize('.')[-1](按.分割为字符串数组,然后取最后一个即可得到类名,然后用decapitalize()将首字母小写即可得到id。

  • 快速打印当前上下文信息

打印错误日志的时候需要打印当前上下文信息的,例如说入参,有时候入参很多的时候,写起来很痛苦,好在有模板函数methodParameters(),返回当前函数参数的列表,当然这个列表我们不能直接使用,需要结合groovyScript对它进行转化。

<printContext>
---------------
LogUtil.$TYPE$(LOGGER, "$MSG$ " + $params$);

将params绑定到groovyScript("'\"' + _1.collect { it + ' = [\" + ' + it + ' + \"]'}.join(', ') + '\"'", methodParameters()),就能够自动将当前函数的参数格式化后输出。

END

官方站点:www.linuxprobe.com

Linux命令大全:www.linuxcool.com

刘遄老师QQ:5604241

Linux技术交流群:3762708

(新群,火热加群中……)

想要学习Linux系统的读者可以点击"阅读原文"按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
法官欣赏的诉讼律师,都懂这些证据运用技巧!冬日必备的手机拍照技巧,让你的照片轻松惊艳朋友圈!5个窗户装饰技巧,看见更美的风景【装修干货】为啥我的代码库那么大?聊聊Git使用坏习惯Unit Runtime:一键运行 AI 生成的代码,或许将成为你的复制 + 粘贴神器2022税季12条省税小技巧,快点收藏起来!春招大爆料!全方位拿捏Networking和面试官的实用技巧!| 求职必修课6个超实用的人际交往小技巧,越早知道越好读《诗》:读 《柏舟》这代码居然有差别?CPU友好的代码该这样写这个煮粥小技巧,你一定要知道没有技巧,全凭体力!亲测闲鱼数码电商项目日赚500块(黑)叔贵自用吃喝技巧,过年七天大鱼大肉,悄悄比别人少吃 2000 大卡!吃东西掌握这个小技巧,不挨饿也能瘦用一张图,如何做高大上的PPT封面?这4个小技巧,小白也能轻松学会!巴金:文学的最高境界是无技巧,说真话JP Morgan、Credit Suisse专业导师带你全面掌握投行面试考点技巧,刷题冲刺,斩获Offer!【房产干货】关于房屋改建的20个超实用技巧寅冬玫瑰樱盛开阳光沙滩GitHub Copilot代码笔刷火了,一刷修bug加文档,特斯拉前AI总监:我现在80%的代码由AI完成"𝙇𝙚𝙖𝙙 𝙏𝙝𝙚 𝘾𝙝𝙖𝙧𝙜𝙚"广告#创译挑战10个时间管理技巧,让你轻松拿捏留学生活!高质量陪玩的5个技巧,不会陪玩的父母一定要看看!通知来了!公开招募200人,记忆力大师亲授 考铁饭碗 的技巧,0经验可学!收入不到1万的人速进!这45个小技巧,让你的代码突然又优雅了码住!Coles和WWS圣诞省钱小技巧,有澳妈采购$200商品只花了$2出头!9个优化小技巧,让文档从“及格”到“优良”爬藤成功与否和经验采集关系不大。而是在怀孕的一霎间就基本决定了。阴雨连绵!2023新一年以“湿气”开局! 冬天用电用暖有技巧,这些方法最省钱变态封控结束了,余波还在再见Vlookup!这5个数据核对技巧,太有用了!通知来了!全国公开招募200人,免费学习短视频变现技巧,0经验可学!!!20个让你提升刑辩胜诉率的技巧,越早知道越好提高性生活质量的几个技巧,学会1个就够用!
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。