zoukankan      html  css  js  c++  java
  • 善用Eclipse的代码模板功能

    Eclipse是个非常强大的IDE,作为一个JAVA程序员,几乎每天都与它打交道,但是它强大的功能都用到了吗?

    AD:2013大数据全球技术峰会课程PPT下载

    Eclipse是个非常强大的IDE,作为一个JAVA程序员,几乎每天都与它打交道,但是它强大的功能都用到了吗?

    今天让我们来看一下Eclipse中的“代码模板”功能。什么是代码模板呢?举个例子,一个很常见的应用,如何在一个类中中建立一个main函数?

    这还不简单?话音未落,只见你在键盘上飞快的敲击着,三下五除二便搞定了。

    OK,打字很快的说。但是,是不是应该思考下,对于这种非常固定的代码,有必要一个字母一个字母的敲吗?

    作为IDE,其中一个设计哲学就是能帮用户干的就帮用户干,像上面这种情况,就该是Eclipse代码模板发挥作用的时候。

    我们只需在类体中键入main,然后使用Eclipse的代码提示快捷键(默认为Alt+/),回车后,就可以看到Eclipse自动帮我们完成了main函数的完整定义,是不是非常方便?

    这只是个简单的例子,其实Eclipse默认还提供了很多代码模板。打开 Windows->Preferences->Java->Editor->Templates,可以看到所有已定义的代码模板列表。

    再举一个更常见的例子,在代码中经常需要在控制台输出一些数据

    System.out.pringln("hello, world");

    以前如果你已经习惯了一个字母一个字母的敲的话,那么现在你可以尝试一下键入sysout,然后按Alt+/,呵呵,整个语句都自动完成了,而且光标还非常体贴的停在括号中,方便你继续输入,是不是很强大?

    在编程中有时还会遇到另一类问题,比如我想把某些代码加到try/catch块中,进行异常检测。在代码模板的帮助下,你完全不用手工键入这部分代码,也不用去管代码缩进,你只需要选中要处理的代码块,然后按Alt+Shift+Z,回车后, Eclipse会自动为所选代码块包上try/catch语句。

    尽管Eclipse默认已经为我们提供了很多有用的模板,但肯定是不够用的,因此我们需要尝试创建自己的代码模板。

    我们以一个很现实的例子来说明,在实际开发中,经常会需要测试某段代码的执行时间,一般来说我们会使用以下方法。

    分别记录代码执行前和执行后的时间戳,然后计算两个时间戳的差值。这段代码是非常固化的,如果每次都手工敲入,很令人崩溃,但是如果使用“代码模板”功能来做,就方便多了。

    打开 Windows->Preferences->Java->Editor->Templates,点击New...,新建代码模板,如下图所示录入代码,创建一个名为“xinneng“的模板。

    (注意:所有“${}”都是模板变量,如${line_selection}表示当前光标选中的代码片段,${cursor}表示代码生成结束后光标所处的位置,还有很多参数大家可以参考Eclipse提供的帮助文档。)

    完成后,选中要测试的代码块,使用快捷键Alt+Shift+Z,可以看到菜单中多了一项xinneng,点击xinneng(),Eclipse自动在选中代码块的上下加上了我们刚才录入的测试代码,酷吧?

    好了,通过上面简单的介绍,大家对Eclipse的“代码模板”功能应该有个大致的了解了,如果想对这一功能进行更深入的研究,可以去查阅相关的帮助文档和资料。



    Eclipse Template简单应用

    话说到现在我从来没有用过Eclipse Template来简化部分代码开发。即使像System.out.println();这样的语句我也是手动敲打,最多拷贝粘贴。熟不知Eclipse已经提供了更好的Template来支持简单扼代码重用功能。

    其实代码开发的时候,很多代码是简单的重复。比如Java类的封装中对一个private变量的get和set操作,如果你的私有变量很多,需要更改的无非是简单的命名替换:

    ?
    1
    2
    3
    4
    5
    6
    7
    private final String name = "Codecho";
    protected  String getName(){
       return name;
    }
    protected void setName(String myName){
      name = myName;
    }

    当然除此之外,还有其他的应用,比如你写main函数,for循环语句等。这些Eclipse 模板的使用将会使你事半功倍。

    首先来看看Eclipse 模板的使用和快捷键设置。

    1. Eclipse模板的使用很简单,加入我们要使用已经定义好的模板 stdout,该模板的功能就是输出语句:System.out.println();。使用方法:在Eclipse代码编辑框中你需要插入该语句的位置输入: stdout,然后使用快捷键:Alt+/,你就可以看到Eclipse模板自动把stdout自动替换了Java输出语句。你可以参考CSDN这篇文章

    2. 当然你可以自定义快捷键。设置方法:Perferences->General->Keys:如图所示:


    如图找到Command下方的Content Assist项,你就会看到Binding,这里你可以自定义你喜欢的快捷键,设置方法很简单那,你需要那个键作为快捷键,就按那个键。设置之后保存即可。

    接着我们看看如何自定义自己的模板:

    1. 新建步骤:Perferences->Java->Editor->Templates,如图所示:

     

    点击右上角的New,就可以新建自己的模板。这里假设是对常量进行定义和get功能的模板设置。设置代码如图所示。保存即可。

    2. 使用方法: 其实之前已经介绍过了,就是在需要插入的位置,输入:myconstant,然后使用快捷键Alt+/.就可以看到如下的扩展:

    来看看几个可能会用到的模板实例:

    1. stdout, 模板为:

    System.out.println(${word_selection}${});${cursor}

    2. Log4J logger

    ${:import(org.apache.log4j.Logger)}
    private static final Logger _logger = Logger.getLogger(${enclosing_type}.class);

    3. 文本读取:

    ${:import(java.io.BufferedReader,  
               java.io.FileNotFoundException,  
               java.io.FileReader,  
               java.io.IOException)}  
     BufferedReader in = null;  
     try {  
        in = new BufferedReader(new FileReader(${fileName}));  
        String line;  
        while ((line = in.readLine()) != null) {  
           ${process}  
        }  
     }  
     catch (FileNotFoundException e) {  
        logger.error(e) ;  
     }  
     catch (IOException e) {  
        logger.error(e) ;  
     } finally {  
        if(in != null) in.close();  
     }  
     ${cursor}

    4. foreach:

    for (${iterable_type} ${iterable_element} : ${iterable}) {
    ${cursor}
    }

    5.Singleton Creation Template:
    创建

    static enum Singleton {
    INSTANCE;
    
    private static final ${enclosing_type} singleton = new ${enclosing_type}();
    
    public ${enclosing_type} getSingleton() {
    return singleton;
    }
    }
    ${cursor}

    使用:

    ${type} ${newName} = ${type}.Singleton.INSTANCE.getSingleton();

    6. null检查:

    if( ${word_selection} != null ){
        ${cursor}
    }
    
    if( ${word_selection} == null ){
        ${cursor}
    }

  • 相关阅读:
    [GXYCTF2019]BabyUpload
    [GYCTF2020]Blacklist
    [极客大挑战 2019]HardSQL
    PHP实现MVC框架路由功能模式
    色环电阻的阻值识别
    python的内存回收机制
    配置Openfiler做ISCS实验
    windows server 2008r2 在vmware里自动关机
    VMware Workstation网络修改vlan id值
    linux的服务自动启动的配置
  • 原文地址:https://www.cnblogs.com/daichangya/p/12959609.html
Copyright © 2011-2022 走看看