小虫的天地

Java SE | Java EE | NetBeans | Open Source World | Groovy | Grails | JavaScript | jQuery
随笔 - 10, 文章 - 0, 评论 - 225, 引用 - 0
数据加载中……

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

  自从大一暑假开始到现在,我学习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界里面很多类或者方法的名称都是这么长的原因。

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

NetBeans 6.0Java编辑器提供超智能的代码提示、完成功能,智能的程度丝毫不逊于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         产生构造方法,setget方法


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

l         重写父类方法

Alt + Insert 选择 Override Method…

我可以重写父类的方法

l         代理成员变量的方法

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

private List list;

Alt + Insert 选择 Delegate Method…


然后如下图所示

下一步,产生了Listadd()代理方法,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) 程序。

版权声明:

本文由令狐虫原创,欢迎转载,转载请保留博客地址:

http://www.blogjava.net/linghuchong/

posted on 2008-03-24 14:58 令狐虫@qq.com 阅读(6040) 评论(30)  编辑  收藏 所属分类: NetBeans

评论

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

Very Intelligent IDE.
2008-03-24 15:59 | BeanSoft

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

@BeanSoft
BeanSoft 老师
我知识的不断积累,很大一部分归功于你
你为初学者创建了大量的学习素材
正是有像你一样无私的奉献精神,
初学者才不断的进步、提高!
谢谢您!~
2008-03-24 16:10 | 令狐虫

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

不错,把netbeans用得很仔细,我们一起来支持netbeans吧
2008-03-24 16:35 | 千里冰封

# re: NetBeans 6.0 提高生产力之Java代码编辑器[未登录]  回复  更多评论   

java群 23133419
欢迎您加入,尤其是讨论java开源技术
2008-03-24 16:50 | diego

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

@千里冰封
经常关注你的博客
以后会多向你请教
2008-03-24 17:24 | 令狐虫

# re: NetBeans 6.0 提高生产力之Java代码编辑器[未登录]  回复  更多评论   

我想說.....以上全部功能 Eclipse 都有

而且大部份都已經遠在 2.1 版本時代已經存在了

現在 E3.4 版/ 甚至 E4 已經走得很遠很遠,
甚至不會再在這種 "基本功能" 上面多討論
2008-03-24 18:47 | Dennis

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

@Dennis

关于NetBeans,请看我最后的总结

Eclipse 和 NetBeans 我都有用

那个编辑器更好用?

按照我的感受是:NetBeans 绝对胜出

按照专家的说法请看:(也一样是NetBeans 胜出)

http://www.javaeye.com/news/1618
2008-03-24 19:12 | 令狐虫

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

已经习惯了eclipse,netbeans的亮点在UML图上
2008-03-24 19:44 | Edward's

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

作者讲得不错,Swing Application Framework 之前也了解过一点点,期待。
2008-03-24 20:37 | Matthew Chen

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

要做到高效与减少IDE依赖并存
2008-03-24 21:20 | 史蒂夫

# re: NetBeans 6.0 提高生产力之Java代码编辑器[未登录]  回复  更多评论   

看样博主真没用过eclipse。
2008-03-24 21:52 | xZeus

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

JavaEye那边还是一如既往的吵闹,谁也不服谁。
2008-03-24 21:55 | 如坐春风

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

是呀,大家多点分享,少点吵闹,楼主做的很好。开发工具,用习惯了就好了,套一句苹果老板的话:我们要创造用户的使用习惯,而不是让用户来指出该如何使用。
2008-03-24 22:53 | BeanSoft

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

一看就知道不熟悉Eclipse
写小程序vim也很不错
2008-03-24 23:17 | ZelluX

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

@Matthew Chen
你翻译williamchen的AWT, SWT, Swing: Java GUI Clean Up
我比较关注

williamchen的http://blog.sina.com.cn/swingjava
我以前一直都非常关注,可惜现在他好久没有新博客了


2008-03-24 23:19 | 令狐虫

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

@xZeus
@ZelluX

在用NetBeans之前,我就已经用Eclipse了

但是你们现在拿MyEclipse这样的插件,还有很多超豪华团队做出来的Eclipse
插件和NetBeans来比,我也无话可说。

你们不用说服我,因为我也很喜欢用Eclipse,现在市场主流的框架Eclipse有成熟的插件

但是随着NetBeans 开始对非官方框架(像Struct 、Spring、Hibernate)的支持,再加上NetBeans本身对官方框架(EJB3.0 、JSF、WS)的超强支持等,NetBeans挑战Eclipse的统治地位是无法避免的,我们不必再讨论这么多,
事实胜于雄辩。

多一种选择对于程序员来说不是更好吗,IDE的竞争得益于程序员。


2008-03-24 23:37 | 令狐虫

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

@BeanSoft
BeanSoft说的是,大家多点分享,你们多介绍些Ecilpse的使用技巧
像BeanSoft的MyEclipse教程,我也非常乐意学习啊! :)
2008-03-24 23:40 | 令狐虫

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

Good article, but many features described here have already been implented by Eclipse, and from Eclipse Europa, you can download the "Eclipse IDE for Java EE Developers" version which has many J2EE packages already installed, so this will remove you from download additional packages.
2008-03-25 18:15 | Find it, try it, experience it

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

@Find it, try it, experience it
没有像MyEclipse这样的插件
Eclipse Europa也起不到多大的作用
2008-03-26 09:59 | 令狐虫

# re: NetBeans 6.0 提高生产力之Java代码编辑器[未登录]  回复  更多评论   

就有些神经,一看到别人说netbeans,他就跳出来说怎么怎么不好了,博主写了篇很好的介绍文,你们怎么就不服了?
2008-03-26 16:08 | wolf

# 我永远跟着sun公司走  回复  更多评论   

毕竟netbeans是sun的。我相信netbeans更相信sun
所以我要顶起
2008-03-26 16:32 | 草包书生

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

看到了你的文章,才知道自己对Netbeans的了解是那么的少!看来以后要好好的利用Netbeans了。
2008-03-26 20:51 | 日月雨林

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

陆续用了5.5,6.0.还是投入eclipse的怀抱。没办法,用的人多了,资料也多。沟通方便点。
2008-04-01 13:15 | lhehuang

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

学校教的是JBuilder的。所以一般作业可以用Elicpset和JBuilder做。不过,由于习惯了JBuilder使用。在不是没有办法的情况下,一般不用Elicpse。不过,最近发现了netbean6.0.发觉真的很不错。我又多了一种选择。呵呵
2008-04-02 12:03 | 小东西

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

netbean 新建class 时 怎么选择继承的类或者接口 找了半天都没有 我用的是6.5测试版
2008-09-19 16:15 | hucq

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

@hucq
Netbeans和Eclipse不一样,Netbeans是通过模板类创建类的
在Netbeans中类、接口等都有相应的模板
创建了这些类、接口后再进行相应的修改。


2008-09-19 19:57 | 令狐虫@qq.com

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

你的意思是说 我如果想继承一个类 就要现在模板里
写个

pubilc classs xxx extend xxx {
}

才可以

这可真的好麻烦 eclipse 和jbuilder 都不是这样
2008-09-20 14:19 | hucq

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

@hucq
呵呵!继承一个类比起eclipse 和jbuilder 是麻烦了一点
我也不明白为什么NetBeans没有这个功能
但这其实也没有什么,现在的设计思想是聚集优于继承,尽量避免继承吧。
2008-09-20 15:01 | 令狐虫@qq.com

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

介绍的这些功能在php版的netbeans里面基本都没有
2008-09-28 14:23 | phper

# re: NetBeans 6.0 提高生产力之Java代码编辑器  回复  更多评论   

@phper
之前我试用了一下NetBeans的PHP版,
各种代码提示、代码完成功能都挺不错的
感觉PHP版也相当优秀!
2008-09-28 14:55 | 令狐虫@qq.com

只有注册用户登录后才能发表评论。


网站导航: