使用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

使用NetBeans提高Java生产效率
可以修改或添加代码模板,不止是
Java语言哦。


智能代码提示、完成

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

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

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

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

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

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

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

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

l试验一

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

使用NetBeans提高Java生产效率
IDE识别出我们这时应该用到的关键字

l试验二:

在一个类内部中,我们按下Ctrl+/
使用NetBeans提高Java生产效率

使用NetBeans提高Java生产效率

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

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

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

l试验三:

在一个方法内部,我们按下Ctrl+/
使用NetBeans提高Java生产效率

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

l试验四:

添加Spring

使用NetBeans提高Java生产效率
然后在方法里面输入
Appli再按下Ctrl+/
使用NetBeans提高Java生产效率

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

l试验五:

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

使用NetBeans提高Java生产效率
呵呵,
IDE帮我们想好了变量名的名称了,以后再也不用为变量名发愁了

我们引用相关变量看看

使用NetBeans提高Java生产效率


试验六:

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

使用NetBeans提高Java生产效率

使用NetBeans提高Java生产效率

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



代码生成

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

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

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

privateStringname;
privateStringno;

然后在类里面按Alt + Insert键(或者右键弹出菜单选择insert code…
使用NetBeans提高Java生产效率

l产生构造方法,setget方法

使用NetBeans提高Java生产效率
一旦成员变量变多,代码生成功能极大的方便了我们

l重写父类方法

Alt + Insert选择Override Method…

我可以重写父类的方法

l代理成员变量的方法

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

private List list;

Alt + Insert选择Delegate Method…

使用NetBeans提高Java生产效率
然后如下图所示

下一步,产生了Listadd()代理方法,J
使用NetBeans提高Java生产效率


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

Add Perprerty….

用来增加成员变量
使用NetBeans提高Java生产效率



聪明的小灯泡

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

l包导入修复

使用NetBeans提高Java生产效率
如上图,单击小灯泡后出现
使用NetBeans提高Java生产效率

l包围代码

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

使用NetBeans提高Java生产效率
点击小灯泡

使用NetBeans提高Java生产效率
我们再选择
Surround with for try{

结果IDE为我们产生了

使用NetBeans提高Java生产效率try{
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率System.out.println (
"");
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率}
catch (Exceptionexception){
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率}

使用NetBeans提高Java生产效率

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

l生成JavaDoc注释

使用NetBeans提高Java生产效率
结果
IDE为我们生成了相应的注释

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

l生成返回变量声明

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

我们可以让IDE来完成

使用NetBeans提高Java生产效率
点击将产生
byte[] bytes = name.getBytes();


代码重构

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

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

使用NetBeans提高Java生产效率
正如上图所示,
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(封装值域)

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

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

lIntroduce Method(引入方法)

假如我们有如下Foo.java

使用NetBeans提高Java生产效率publicclassFoo{
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
privateStringname;
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
privateStringno;
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
publicvoidecho (Stringa,intb,Longc){
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
//--------------------
使用NetBeans提高Java生产效率

使用NetBeans提高Java生产效率System.out.println(
"=========================");
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率System.out.println(
"菜单 ");
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率System.out.println(
"=========================");
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
//--------------------
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
//其他关键代码
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
//--------------------
使用NetBeans提高Java生产效率

使用NetBeans提高Java生产效率System.out.println(
"=========================");
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率System.out.println(
"菜单 ");
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率System.out.println(
"=========================");
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
//--------------------
使用NetBeans提高Java生产效率

使用NetBeans提高Java生产效率}

使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率}

使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率

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

使用NetBeans提高Java生产效率

最后改为:

使用NetBeans提高Java生产效率publicclassFoo{
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
privateStringname;
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
privateStringno;
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
publicvoidecho (Stringa,intb,Longc){
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率showMenu();
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
//--------------------
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
//其他代码
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
//--------------------
使用NetBeans提高Java生产效率

使用NetBeans提高Java生产效率showMenu();
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
//--------------------
使用NetBeans提高Java生产效率

使用NetBeans提高Java生产效率}

使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
privatevoidshowMenu(){
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
//--------------------
使用NetBeans提高Java生产效率

使用NetBeans提高Java生产效率System.out.println(
"=========================");
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率System.out.println(
"菜单 ");
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率System.out.println(
"=========================");
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
//--------------------
使用NetBeans提高Java生产效率

使用NetBeans提高Java生产效率}

使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率}

使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率

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

假如我们有如下Foo.java

publicclassFoo{

privateStringname;

privateStringno;

publicvoidecho (finalStringa,finalintb,finalLongc){

newThread(newRunnable(){

publicvoidrun(){

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

}

});

}

}

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

把光标放到new Thread()里面

使用NetBeans提高Java生产效率
看看
IDE给我们生成了什么:

使用NetBeans提高Java生产效率publicclassFoo{
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
privateStringname;
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
privateStringno;
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
publicvoidecho (finalStringa,finalintb,finalLongc){
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
newThread(newRunnableImpl(a,b,c));
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率}

使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
staticclassRunnableImplimplementsRunnable{
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
privatefinalStringa;
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
privatefinalintb;
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
privatefinalLongc;
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
publicRunnableImpl(Stringa,intb,Longc) {
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
this.a=a;
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
this.b=b;
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
this.c=c;
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率}

使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率
publicvoidrun(){
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率System.out.println (a
+b+c);
使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率}

使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率}

使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率}

使用NetBeans提高Java生产效率
使用NetBeans提高Java生产效率

结构清晰了很多。