NetBeans 6.0 提高生产力之Java代码编辑器

来源:百度文库 编辑:神马文学网 时间:2024/04/28 05:23:01


  自从大一暑假开始到现在,我学习Java差不多快两年的时间了,其间阅读 过无数的博客,从Java SE 到Java EE、从基础类库到各类框架、从编程思想到设计模式,我能从博客中学习到各种书本中没有的东西,了解到各种新的技术。在此我感谢所有博主们辛勤的劳动,是 你们的无私奉献、知识共享的精神才让我们这些初学者获得了极佳的学习途径,解决了我们初学者学习中遇到的大部分类似的问题。

也正是这个原因,我一直想自己写关于Java的博客,贡献自己微薄的力量,但是鉴 于时间和自己的能力,一直没有开始。经过快两年的不断学习,还有阅读了大量的有关Java的博客文章,我发现自己Java水平比起两年前有了质的提高,所 以有了打算写博客的念头,一来记录下自己学习的知识,二来想让各位网友评论博客发现自己的不足,三来帮助像两年前的我一样的初学者。

这是我的第一篇博客,我打算从IDE开始,为什么选择NetBeans而不是Eclipse ?

我发现周围的初学者相对于Eclipse而言更喜欢NetBeans,我虽然 NetBeans和 Eclipse都在使用,但自从NetBeans6.0 M9开始,我更喜欢使用NetBeans。那么为什么NetBeans让那么多初学者爱不释手呢,原因当然是”Netbeans使用很简单功能很强大” J。Netbeans没有Eclipse安装插件的烦恼,使用起来没有 Eclipse那么复杂,NetBeans也完全是有插件组成的。

NetBeans的真正威力只有真正体验才知道,至于关于NetBeans启动慢问题,前几天6.1Beta出来后,NetBeans性能已经有了很大提升。我的机子内存为 2G,玩Netbeans非常爽。

下面开始我的第一篇Java博客

NetBeans 6.0 提高生产力之Java代码编辑器

代码模板

有些代码或者关键字经常使用,如果每次需要时我们都要一个一个字母输入,那么效率是很低下的。Netbeans提供了方便的代码模板功能,我们可以添加自己的模板。当然Netbeans默然提供了一些常用的模板,你只要输入代码的 缩写形式 + Tab键就可以生成相应的代码

如:

只要输入 sout + Tab键就可以生成System.out.println(“”)了。

下面给出常用几个缩写形式:

Psf -----------public static final

br ------------break

fi -------------final

im ------------implements

ir --------------import

le--------------length

re-------------- return

sout-----------System.out.println ("|");

st --------------static

查看更多的默认代码模板,请择菜单栏的 帮助(help)->快捷键列表(keyboard shortcuts Card)

当然也可以添加自己的模板,从主菜单中选择Tools > Options 选择Editor


可以修改或添加代码模板,不止是Java语言哦。


智能代码提示、完成

《代码大全》里第十一章 变量名的力量 里说道变量名的作用非常重要。为变量命名时最重要的考虑事项是,该名字要完全,准确地描述出该变量所代表的事物。

上面的建议非常重要,好的变量名能让代码的意图更清晰,代码更可阅读性。

这也是为什么Java界里面很多类或者方法的名称都是这么长的原因。

这样阅读是清晰了,但是不便于输入。如果让你用纯文本编写 SSH(Sructs, Spring,Hibernate),不考虑配置文件,你可能还是不愿意,因为SSH里面由于遵循良好的命名习惯,大部分类名和方法名都是非常长的。

NetBeans 6.0的Java编辑器提供超智能的代码提示、完成功能,智能的程度丝毫不逊于IntelliJ IDEA,更不要说Eclipse了。

下面让我们通过试验来看看NetBeans Java代码编辑器智能到什么程度

提示:代码提示功能的快捷键为:Ctrl + 空格键 和 Ctrl+\ (反斜杠) ,由于Ctrl + 空格键和

我们的中文输入法冲突了,所以你可以用Ctrl+\,或者修改为自己喜欢的快捷键

l         试验一 :

我们在Netbeans新建一个 Java 类,删除掉IDE给我们生成的代码然后按下Ctrl+\


IDE识别出我们这时应该用到的关键字

l         试验二:

在一个类内部中,我们按下Ctrl+\


Foo是新建的类,默认继承Object 对象,看来IDE能识别出父类的方法clone()~toString

Foo() generate 是产生Foo类的构造方法

后面是类内部里面可能用到的关键字和java核心包里面的类和各个包

l         试验三:

在一个方法内部,我们按下Ctrl+\

我们看到,代码提示里提示有方法的参数名a,b,c

l         试验四:

添加Spring 库


然后在方法里面输入Appli 再按下Ctrl+\

看到没有,Spring中的类名和 ”Appli”相关类都显示出来了

l         试验五:

在刚才的方法中输入 ApplicationContext + 空格 + Ctrl+\


呵呵,IDE帮我们想好了变量名的名称了,以后再也不用为变量名发愁了

我们引用相关变量看看

 


试验六:

在一个类的方法中输入 List list=new + 空格 + Ctrl+\





我晕,多态都支持,呵呵。



代码生成

如果NetBeans仅仅支持上面的代码提示功能,那么NetBeans吸引力也不是很大,毕竟其它 IDE也提供相应的功能,但是别急,我们慢慢享受IDE提供的免费大餐。

下面继续探索NetBeans的代码编辑器的其它功能

我们在类面添加两个成员变量

 

    private String name;
    private String no;

 

然后在类里面按 Alt + Insert键(或者右键弹出菜单选择 insert code… )


l         产生构造方法,set 、get方法


一旦成员变量变多,代码生成功能极大的方便了我们

l         重写父类方法

Alt + Insert键 选择 Override Method…

我可以重写父类的方法

l         代理成员变量的方法

首先为了测试该功能,我们新建一个成员变量

private List list;

按 Alt + Insert键 选择 Delegate Method…


然后如下图所示

下一步,产生了List的add()代理方法,J



l         我们还注意到,Netbeans 6.1beta里多了一个代码产生选项

Add Perprerty….

用来增加成员变量




聪明的小灯泡

和其它IDE一样, NetBeans提供相应的代码左边出现一个小灯泡,以完成修复导入包等功能。

l         包导入修复


如上图,单击小灯泡后出现


l         包围代码

选择一段代码,代码左边将产生小灯泡


点击小灯泡


我们再选择Surround with for try{

结果IDE为我们产生了

 

        try {

            System.out.println ("");

        } catch  (Exception exception) {

        }

 

^_^ ,还可以用其它语句包围

l         生成JavaDoc注释


结果IDE为我们生成了相应的注释


提示:NetBeans6.0默认不提供该功能,启用该功能请确保Tools > Options > Java Code里的Javadoc里的选项都选中


l         生成返回变量声明

我们经常需要调用其它类的方法返回的值,每次调用都要声明一下局部变量,相当麻烦

我们可以让IDE来完成


点击将产生    byte[] bytes = name.getBytes();


代码重构

《重构——改善既有代码的设计》一书里提供了超过70个已经被证明效果的重构手法,但是如果没有IDE的支持,重构过程中很容易出错,这就是为什么很多人即使知道重构的好处也不愿意重构的原因。如果 IDE能提供很重构的支持,那么重构手法将变成半自动化,提高重构的效率。

现在让我们来看看NetBeans 提供了哪几种重构手法:


正如上图所示,NetBeans提供了如下常用的重构手法

Change Method parameters(改变方法参数)

Pull Up(值域、方法上拉)

Push Down(值域、方法下拉)

Extract Interface(提炼接口)

Extract Superclass(提炼超类)

Move Inner to Outer Level(移动内部类为外部类)

Convert Anonymous to Inner(改变匿名类为内部类)

Introduce Variable(引入变量)

Introduce Constant(引入常量)

Introduce Field(引入值域)

Introduce Method(引入方法)

Encapsulate Fields(封装值域)

不明白重构的初学者建议看《重构——改善既有代码的设计》一书(中国电力出版社)

由于边幅的原因,不能一一举例,仅拿两个重构手法来举例

l         Introduce Method(引入方法)

假如我们有如下Foo.java

 

public class Foo{

    private String name;

    private String no;

    public void echo (String a, int b, Long c) {

        //--------------------

        System.out.println("=========================");

        System.out.println("           菜单           ");

        System.out.println("=========================");

        //--------------------

        //其他关键代码

        //--------------------

        System.out.println("=========================");

        System.out.println("           菜单           ");

        System.out.println("=========================");

        //--------------------

    }

}

明显字段代码有冗余,需要Introduce Method重构,



最后改为:

 

public class Foo{

    private String name;

    private String no;

    public void echo (String a, int b, Long c) {

        showMenu();

        //--------------------

        //其他代码

        //--------------------

        showMenu();

        //--------------------

    }

    private void showMenu() {

        //--------------------

        System.out.println("=========================");

        System.out.println("           菜单           ");

        System.out.println("=========================");

        //--------------------

    }

}

l         Convert Anonymous to Inner(改变匿名类为内部类)

假如我们有如下Foo.java

 

public class Foo{

    private String name;

    private String no;

    public void echo (final String a, final int b, final Long c) {

        new Thread(new Runnable() {

            public void run() {

                System. out.println(a+b+c);

            }

        });

    }

}

上面的例子看起来不需要重构,但是这里仅仅是举例怎么用Convert Anonymous to Inner手法

把光标放到new Thread()里面


看看IDE给我们生成了什么:

 

public class Foo{

    private String name;

    private String no;

    public void echo (final String a, final int b, final Long c) {

        new Thread(new RunnableImpl(a, b, c));

    }

    static class RunnableImpl implements Runnable {

        private final String a;

        private final int b;

        private final Long c;

        public RunnableImpl(String a, int b, Long c)  {

            this.a = a;

            this.b = b;

            this.c = c;

        }

        public void run() {

            System.out.println (a + b + c);

        }

    }

}

结构清晰了很多。


总结

其实NetBeans的代码编辑器还很多非常强大的功能我没有说明,鉴于边幅原因,而且很多功能是可以自己亲身体验的,所以这里就不一一列举出来。

我的下一篇博客将介绍用NetBeans 开发 Swing Application Framework (JSR 296) 程序。