自從大一暑假開(kāi)始到現(xiàn)在,我學(xué)習(xí)Java差不多快兩年的時(shí)間了,其間閱讀過(guò)無(wú)數(shù)的博客,從Java SE 到Java EE、從基礎(chǔ)類庫(kù)到各類框架、從編程思想到設(shè)計(jì)模式,我能從博客中學(xué)習(xí)到各種書(shū)本中沒(méi)有的東西,了解到各種新的技術(shù)。在此我感謝所有博主們辛勤的勞動(dòng),是你們的無(wú)私奉獻(xiàn)、知識(shí)共享的精神才讓我們這些初學(xué)者獲得了極佳的學(xué)習(xí)途徑,解決了我們初學(xué)者學(xué)習(xí)中遇到的大部分類似的問(wèn)題。
也正是這個(gè)原因,我一直想自己寫關(guān)于Java的博客,貢獻(xiàn)自己微薄的力量,但是鑒于時(shí)間和自己的能力,一直沒(méi)有開(kāi)始。經(jīng)過(guò)快兩年的不斷學(xué)習(xí),還有閱讀了大量的有關(guān)Java的博客文章,我發(fā)現(xiàn)自己Java水平比起兩年前有了質(zhì)的提高,所以有了打算寫博客的念頭,一來(lái)記錄下自己學(xué)習(xí)的知識(shí),二來(lái)想讓各位網(wǎng)友評(píng)論博客發(fā)現(xiàn)自己的不足,三來(lái)幫助像兩年前的我一樣的初學(xué)者。
這是我的第一篇博客,我打算從IDE開(kāi)始,為什么選擇NetBeans而不是Eclipse ?
我發(fā)現(xiàn)周圍的初學(xué)者相對(duì)于Eclipse而言更喜歡NetBeans,我雖然NetBeans和 Eclipse都在使用,但自從NetBeans6.0 M9開(kāi)始,我更喜歡使用NetBeans。那么為什么NetBeans讓那么多初學(xué)者愛(ài)不釋手呢,原因當(dāng)然是”Netbeans使用很簡(jiǎn)單功能很強(qiáng)大” J。Netbeans沒(méi)有Eclipse安裝插件的煩惱,使用起來(lái)沒(méi)有 Eclipse那么復(fù)雜,NetBeans也完全是有插件組成的。
NetBeans的真正威力只有真正體驗(yàn)才知道,至于關(guān)于NetBeans啟動(dòng)慢問(wèn)題,前幾天6.1Beta出來(lái)后,NetBeans性能已經(jīng)有了很大提升。我的機(jī)子內(nèi)存為 2G,玩Netbeans非常爽。
下面開(kāi)始我的第一篇Java博客
NetBeans 6.0 提高生產(chǎn)力之Java代碼編輯器
代碼模板
有些代碼或者關(guān)鍵字經(jīng)常使用,如果每次需要時(shí)我們都要一個(gè)一個(gè)字母輸入,那么效率是很低下的。Netbeans提供了方便的代碼模板功能,我們可以添加自己的模板。當(dāng)然Netbeans默然提供了一些常用的模板,你只要輸入代碼的 縮寫形式 + Tab鍵就可以生成相應(yīng)的代碼
如:
只要輸入 sout + Tab鍵就可以生成System.out.println(“”)了。
下面給出常用幾個(gè)縮寫形式:
Psf -----------public static final
br ------------break
fi -------------final
im ------------implements
ir --------------import
le--------------length
re-------------- return
sout-----------System.out.println ("|");
st --------------static
查看更多的默認(rèn)代碼模板,請(qǐng)擇菜單欄的 幫助(help)->快捷鍵列表(keyboard shortcuts Card)
當(dāng)然也可以添加自己的模板,從主菜單中選擇Tools > Options 選擇Editor

可以修改或添加代碼模板,不止是Java語(yǔ)言哦。
智能代碼提示、完成
《代碼大全》里第十一章 變量名的力量 里說(shuō)道變量名的作用非常重要。為變量命名時(shí)最重要的考慮事項(xiàng)是,該名字要完全,準(zhǔn)確地描述出該變量所代表的事物。
上面的建議非常重要,好的變量名能讓代碼的意圖更清晰,代碼更可閱讀性。
這也是為什么Java界里面很多類或者方法的名稱都是這么長(zhǎng)的原因。
這樣閱讀是清晰了,但是不便于輸入。如果讓你用純文本編寫 SSH(Sructs, Spring,Hibernate),不考慮配置文件,你可能還是不愿意,因?yàn)?/span>SSH里面由于遵循良好的命名習(xí)慣,大部分類名和方法名都是非常長(zhǎng)的。
NetBeans 6.0的Java編輯器提供超智能的代碼提示、完成功能,智能的程度絲毫不遜于IntelliJ IDEA,更不要說(shuō)Eclipse了。
下面讓我們通過(guò)試驗(yàn)來(lái)看看NetBeans Java代碼編輯器智能到什么程度
提示:代碼提示功能的快捷鍵為:Ctrl + 空格鍵 和 Ctrl+\ (反斜杠) ,由于Ctrl + 空格鍵和
我們的中文輸入法沖突了,所以你可以用Ctrl+\,或者修改為自己喜歡的快捷鍵
l 試驗(yàn)一 :
我們?cè)?/span>Netbeans新建一個(gè) Java 類,刪除掉IDE給我們生成的代碼然后按下Ctrl+\

IDE識(shí)別出我們這時(shí)應(yīng)該用到的關(guān)鍵字
l 試驗(yàn)二:
在一個(gè)類內(nèi)部中,我們按下Ctrl+\


Foo是新建的類,默認(rèn)繼承Object 對(duì)象,看來(lái)IDE能識(shí)別出父類的方法clone()~toString
Foo() generate 是產(chǎn)生Foo類的構(gòu)造方法
后面是類內(nèi)部里面可能用到的關(guān)鍵字和java核心包里面的類和各個(gè)包
l 試驗(yàn)三:
在一個(gè)方法內(nèi)部,我們按下Ctrl+\

我們看到,代碼提示里提示有方法的參數(shù)名a,b,c
l 試驗(yàn)四:
添加Spring 庫(kù)

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

看到?jīng)]有,Spring中的類名和 ”Appli”相關(guān)類都顯示出來(lái)了
l 試驗(yàn)五:
在剛才的方法中輸入 ApplicationContext + 空格 + Ctrl+\

呵呵,IDE幫我們想好了變量名的名稱了,以后再也不用為變量名發(fā)愁了
我們引用相關(guān)變量看看

試驗(yàn)六:
在一個(gè)類的方法中輸入 List list=new + 空格 + Ctrl+\


我暈,多態(tài)都支持,呵呵。
代碼生成
如果NetBeans僅僅支持上面的代碼提示功能,那么NetBeans吸引力也不是很大,畢竟其它 IDE也提供相應(yīng)的功能,但是別急,我們慢慢享受IDE提供的免費(fèi)大餐。
下面繼續(xù)探索NetBeans的代碼編輯器的其它功能
我們?cè)陬惷嫣砑觾蓚€(gè)成員變量
private String name;
private String no;
然后在類里面按 Alt + Insert鍵(或者右鍵彈出菜單選擇 insert code… )

l 產(chǎn)生構(gòu)造方法,set 、get方法

一旦成員變量變多,代碼生成功能極大的方便了我們
l 重寫父類方法
Alt + Insert鍵 選擇 Override Method…
我可以重寫父類的方法
l 代理成員變量的方法
首先為了測(cè)試該功能,我們新建一個(gè)成員變量
private List list;
按 Alt + Insert鍵 選擇 Delegate Method…

然后如下圖所示
下一步,產(chǎn)生了List的add()代理方法,J

l 我們還注意到,Netbeans 6.1beta里多了一個(gè)代碼產(chǎn)生選項(xiàng)
Add Perprerty….
用來(lái)增加成員變量

聰明的小燈泡
和其它IDE一樣, NetBeans提供相應(yīng)的代碼左邊出現(xiàn)一個(gè)小燈泡,以完成修復(fù)導(dǎo)入包等功能。
l 包導(dǎo)入修復(fù)

如上圖,單擊小燈泡后出現(xiàn)

l 包圍代碼
選擇一段代碼,代碼左邊將產(chǎn)生小燈泡

點(diǎn)擊小燈泡

我們?cè)龠x擇Surround with for try{
結(jié)果IDE為我們產(chǎn)生了

try
{

System.out.println ("");


} catch (Exception exception)
{

}

^_^ ,還可以用其它語(yǔ)句包圍
l 生成JavaDoc注釋

結(jié)果IDE為我們生成了相應(yīng)的注釋

提示:NetBeans6.0默認(rèn)不提供該功能,啟用該功能請(qǐng)確保Tools > Options > Java Code里的Javadoc里的選項(xiàng)都選中

l 生成返回變量聲明
我們經(jīng)常需要調(diào)用其它類的方法返回的值,每次調(diào)用都要聲明一下局部變量,相當(dāng)麻煩
我們可以讓IDE來(lái)完成

點(diǎn)擊將產(chǎn)生 byte[] bytes = name.getBytes();
代碼重構(gòu)
《重構(gòu)——改善既有代碼的設(shè)計(jì)》一書(shū)里提供了超過(guò)70個(gè)已經(jīng)被證明效果的重構(gòu)手法,但是如果沒(méi)有IDE的支持,重構(gòu)過(guò)程中很容易出錯(cuò),這就是為什么很多人即使知道重構(gòu)的好處也不愿意重構(gòu)的原因。如果 IDE能提供很重構(gòu)的支持,那么重構(gòu)手法將變成半自動(dòng)化,提高重構(gòu)的效率。
現(xiàn)在讓我們來(lái)看看NetBeans 提供了哪幾種重構(gòu)手法:

正如上圖所示,NetBeans提供了如下常用的重構(gòu)手法
Change Method parameters(改變方法參數(shù))
Pull Up(值域、方法上拉)
Push Down(值域、方法下拉)
Extract Interface(提煉接口)
Extract Superclass(提煉超類)
Move Inner to Outer Level(移動(dòng)內(nèi)部類為外部類)
Convert Anonymous to Inner(改變匿名類為內(nèi)部類)
Introduce Variable(引入變量)
Introduce Constant(引入常量)
Introduce Field(引入值域)
Introduce Method(引入方法)
Encapsulate Fields(封裝值域)
不明白重構(gòu)的初學(xué)者建議看《重構(gòu)——改善既有代碼的設(shè)計(jì)》一書(shū)(中國(guó)電力出版社)
由于邊幅的原因,不能一一舉例,僅拿兩個(gè)重構(gòu)手法來(lái)舉例
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("=========================");

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

//其他關(guān)鍵代碼

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

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

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

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

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

}

}


明顯字段代碼有冗余,需要Introduce Method重構(gòu),

最后改為:

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(改變匿名類為內(nèi)部類)
假如我們有如下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);
}
});
}
}
上面的例子看起來(lái)不需要重構(gòu),但是這里僅僅是舉例怎么用Convert Anonymous to Inner手法
把光標(biāo)放到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);

}

}

}


結(jié)構(gòu)清晰了很多。
總結(jié)
其實(shí)NetBeans的代碼編輯器還很多非常強(qiáng)大的功能我沒(méi)有說(shuō)明,鑒于邊幅原因,而且很多功能是可以自己親身體驗(yàn)的,所以這里就不一一列舉出來(lái)。
我的下一篇博客將介紹用NetBeans 開(kāi)發(fā) Swing Application Framework (JSR 296) 程序。
版權(quán)聲明:
本文由令狐蟲(chóng)原創(chuàng),歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)保留博客地址:
http://www.tkk7.com/linghuchong/