提高开发效率Live Templates使用技巧详解

 更新时间:2023年01月10日 11:08:41   作者:古时的风筝  
这篇文章主要为大家介绍了提高开发效率Live Templates使用技巧详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

Live Templates 是什么,听上去感觉挺玄乎的。有的同学用过之后觉得简直太好用了,不能说大大提高了开发效率吧,至少也是小小的提高一下,节省了很多敲重复代码的时间。有的同学用过之后说:没什么用,奇技巧罢了。

就算你没听过这个概念,但是或多或少你可能都用到过一点,就算没有用过的话,也可能见到过一些,没吃过猪肉可能也见过猪跑,就像下面这样的操作。

总结一下呢,它就类似于一种快捷指令(神奇代码),只要你在 IDEA 中输入特定的字母组合,IDEA 就会帮你在当前输入的位置插入一段预先定义好的代码,代码可以是固定的,也可以定义一些上下文变量,适用于那些常用的、使用频率较高的声明或重复代码段。

比如声明静态 finalString,在不用 Live Tmeplates 的情况下,我们会手动在 IDEA 中依次敲出 "public static final String" 这一行代码,当然可能借助 IDEA 的只能提示,每个单词只需要敲前两个字母。在使用了 Live Tmeplates 的情况下, 我们只需要敲出 psfs这四个字母,然后按回车键,IDEA 就会帮我们在 psfs这个位置插入 "public static final String" 这一行。

没用过的同学是不是赶紧打开 IDEA 试一下呢?在设置界面,输入 Live Templates,然后找到右侧的 Java就可以看到内置的模板。不光有 Java 的,对于多种文件类型都有支持,比如 SQL 、JavaScript、JSP 、Kotlin 等。

下面介绍几个 IDEA 内置的、常用的模板。

常用的 Live Templates

main 和 psvm

main 方法插入,虽然我们已经可以很熟练的盲打出下面这一段代码,但是只敲四个字母是不是会更快呢。

public static void main(String[] args){
}

变量声明

下面一些是常用的变量声明

psfs

public static final String 

psfi

public static final int 

prsf

private static final 

St

String 

控制台输出

下面是控制台输出,还有一些,不一一列举了。

sout

文本输出,最常用到的。

System.out.println();

souf

带格式化的文本输出。

System.out.printf();

循环迭代

fori

输入完,按回车后,光标会在 i<的位置,等待输入临界值。

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

iter

用 forEach 的方式循环,在一个数组或者列表变量下方使用。

List<String> array = new ArrayList<>();
for (String s1 : array) {
}

itco

用迭代器的方式迭代,同样是在一个列表变量下方使用。

List<String> array = new ArrayList<>();
for (Iterator<String> iterator = array.iterator(); iterator.hasNext(); ) {
  String next =  iterator.next();
}

Surround Templates

这种模板是在选中一段代码后,然后使用快捷键 option+command+j调出提示框,然后选择一个模板类型。

这个快捷键是 MAC 系统下的,如果你用的是 windows,可以通过点击 code菜单项,找到 Sorround With,看看快捷键是什么。

C

实现一个 Callable

Callable<Object> callable = new Callable<Object>() {
  public Object call() throws Exception {
    System.out.println("hello");
  }
};

RL 和 WL

插入一段读锁或写锁加解锁代码。

// 要先声明一个读写锁实例
ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
readWriteLock.readLock().lock();
try {
  System.out.println("hello");
} finally {
  readWriteLock.readLock().unlock();
}

自定义 Template

有时候我们经常会高频词的使用一段相似的代码, 比如做网络开发的同学,会经常用到 Socket 相关的初始化代码。

对于这种我们自己经常要写的某些类似的代码段,就可以抽取出一个 Template 出来,方便我们使用。

下面我就实现一个自定的 Template,来看一下是不是大大简化了重复性劳动。有的同学可能觉得无所谓的事儿,复制、粘贴也挺省事儿。见仁见智吧,觉得有用的可以尝试一下,觉得鸡肋的也无所谓,反正也不影响最后的功能实现。

比如我最新在做一些系统优化的工作,这个过程中,我会频繁的用 commons-lang3StopWatch来看某些方法或者某些代码段的执行时间。比如下面的代码段:

StopWatch stopWatch = new StopWatch("代码段");
stopWatch.start();
try {
  Thread.sleep(1000);
} catch (InterruptedException e) {
  throw new RuntimeException(e);
}
stopWatch.stop();
System.out.printf("执行时间 %s%n",stopWatch.toString());

由于我比较懒,所以我不想每次都敲重复的内容,连粘贴复制都不想。所以就想到了 Live Template。

1、打开 IDEA 的设置窗口,找到 Editor 下的 Live Templates,在右侧找到 Java,点击最右侧的加号。

2、输入这个 Template 的名字,到时候可以在编辑器中通过输入这个名字来插入这个模板。

输入描述,帮助我们记忆。

最后输入模板的内容。

我给这个模板起名为 watch,模板内容如下:

StopWatch stopWatch = new StopWatch("$MESSAGE$");
stopWatch.start();
$SELECTION$
stopWatch.stop();
System.out.printf("执行时间 %s%n",stopWatch.toString());

$SELECTION$表示选中的部分,我们要监控的正好是某个方法或者某个代码段,所以正好可以用 Surround Templates,并且在内容中用了 $SELECTION$,模板就默认为 Surround Templates了。

$MESSAGE$就是一个占位符的作用,当我们插入这个模板后,光标会定位到这个占位符,我们就可以在需要定制的地方输入我们想要的内容了。在这里呢,由于我的一个方法中可能用到多个 StopWatch,所以正好在这儿占位,给不同的 StopWatch 赋予不同的名字。

可以通过下面的演示看一下效果。

Live Template 支持的变量

有一些情况下,我们希望插入的内容不只是固定不变的代码段,而是希望加入一些上下文相关的内容,比如当前方法的入参,比如当前类名,比如当前方法名等。用下面这个例子说明一下。

有一个内置的模板叫做 soutm,它的描述是这样的:Prints current class and method names to System.out,打印当前类和方法名,我们看一下效果,直接将当前类和方法名 Study.main填充到了println参数位置上。

模板内容是这样的,其中用到了两个变量是表示当前类名的 $CLASS_NAME$和表示当前方法名的$METHOD_NAME$

System.out.println("$CLASS_NAME$.$METHOD_NAME$");

更多的可用变量可以到 IDEA 官网查看,看到这些变量后,可能会打开你的思路,更近一步的为你提高开发效率。不过不用这些变量也没关系,上面这写其实差不多也够用了。

官网地址:www.jetbrains.com/help/idea/t…

以上就是提高开发效率Live Templates使用技巧详解的详细内容,更多关于提高开发效率Live Templates的资料请关注脚本之家其它相关文章!

相关文章

  • Java实战入门之双色球彩票小游戏

    Java实战入门之双色球彩票小游戏

    这篇文章主要介绍了Java实战入门之双色球彩票,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • Java容器类源码详解 Deque与ArrayDeque

    Java容器类源码详解 Deque与ArrayDeque

    这篇文章主要介绍了Java容器类源码详解 Deque与ArrayDeque,Deque 接口继承自 Queue接口,但 Deque 支持同时从两端添加或移除元素,因此又被成为双端队列。,需要的朋友可以参考下
    2019-06-06
  • Java旋转数组中最小数字具体实现(图文详解版)

    Java旋转数组中最小数字具体实现(图文详解版)

    这篇文章主要给大家介绍了关于Java旋转数组中最小数字具体实现的相关资料,旋转数组,说明数据不变,只是改变位置,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • Java substring方法实现原理解析

    Java substring方法实现原理解析

    这篇文章主要介绍了Java substring方法实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • IDEA集成MyBatis Generator插件的使用

    IDEA集成MyBatis Generator插件的使用

    这篇文章主要介绍了IDEA集成MyBatis Generator插件的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 浅析java 的 static 关键字用法

    浅析java 的 static 关键字用法

    这篇文章主要介绍了浅析java 的 static 关键字用法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • java基础javeSE程序逻辑控制语法

    java基础javeSE程序逻辑控制语法

    主要讲解Java中程序的逻辑控制语句包括 Java中的输入输出方式 顺序结构循环结构等,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-09-09
  • Java使用wait和notify实现线程之间的通信

    Java使用wait和notify实现线程之间的通信

    Java 线程通信是将多个独立的线程个体进行关联处理,使得线程与线程之间能进行相互通信,下面这篇文章主要给大家介绍了关于Java使用wait和notify实现线程之间通信的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • Spring5中SpringWebContext方法过时的解决方案

    Spring5中SpringWebContext方法过时的解决方案

    这篇文章主要介绍了Spring5中SpringWebContext方法过时的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • idea tomcat乱码问题的解决及相关设置的步骤

    idea tomcat乱码问题的解决及相关设置的步骤

    这篇文章主要介绍了idea tomcat乱码问题的解决及相关设置的步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11

最新评论