国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

JBuilder2005實現重構之雜項重構

2019-11-18 15:45:25
字體:
來源:轉載
供稿:網友
1、優化import

   簡而言之,通過優化import的設置可以達到以下的目的:

   去除無用的import語句:如在類中沒有使用任何包中的類,則這個包的import語句可以刪除。

   設置包的閾值:當前類引用包中類的數目大于這個閾值時,引入整個包(如import java.io.*),否則為包中每個被引用的類單獨指定的一個import語句(如import java.io.File)。

   設置包的排列順序:按照一般的習慣,按包的常用程度從高到低進行排列,常用的包放在前面引入。一般情況下,JDK經典的包放在最前面(以java.為前綴),JDK擴展包緊跟其后(以javax.為前綴),接著是第三方類庫包(如org.apache.*),再次是自己開發的公用類庫,最后才是工程中的其他類。

   通過PRoject->Project Properties...->Java Formating->在Imports設置頁中切換到Threshold標

JBuilder2005實現重構之雜項重構(圖一)
圖 25 設置包閾值對話框
   簽頁中通過Package import threshold指定包的閾值,默認為0表示進行優化import后,用通配符以整個包的形式分別引入。

   你也可以勾選Always import classes項,將每個類用單獨的import語句引入,這相當于將Package import threshold設置為無窮大。

   在Imports設置頁中切換到Sort Order標簽頁,在此指定import代碼段的包引入順序及格式。假設myrefactor.jpx工程中有一個myrefactor.sub1的子包,我們通過以下步驟將其置為import引入代碼段的最后,并在前面添加一個空行:

   1) 點擊Add blank line在列表中添加一個<blank line>,表示在import代碼段中添加一個空行。

   2) 點擊Add prefix...在彈出的Add Prefix對話框中選擇myrefactor.sub1包。

   3) 點擊OK保存設置。

JBuilder2005實現重構之雜項重構(圖二)
圖 26 import代碼段樣式設置對話框
   此外,還可以通過Move Up和Move Down調整包在引入代碼段中的位置。列表中有一個<*>項,表示其他所有未匹配的包,如有一個以com.打開的包就放置在<*>的位置。

   設置完后,在工程窗格的<Project Source>節點上右擊,選擇Format Package...在彈出的Fomcat Code對話框中確認選擇Optimize imports項,按OK后,JBuilder對工程中所有的類進行import代碼段進行優化重構。

  2、自動添加異常捕捉

   自動添加異常捕捉功能,從嚴格意義上說并不屬性代碼重構的范疇,因為編譯期的異常是一定要有捕捉代碼的,否則程序無法通過編譯。但在某些情況下,自動添加異常捕捉就是地地道道的代碼重構了,請看下面的代碼:

   代碼清單 “面向編譯”的異常捕捉

1. public void autoCatch()
2. {
3.  try {
4.   FileInputStream fis = null ;
5.   byte[] bArr = new byte[1024] ;
6.   //會拋出FileNotFoundException
7.   fis = new FileInputStream("D:/1.txt") ;
8.   //會拋出IOException
9.   fis.read(bArr) ;
10.  }
11.  catch(Exception ex) {
12.  }
13. }

   第7行語句會拋出FileNotFoundExcetion,而第9行會拋出IOException,理應分別捕捉這兩個異常,但是開發人員也許對異常并不感愛好,所以直接捕捉Exception敷衍了事。由于Exception是所有異常的祖先類,所以這種異常捕捉方式并不會引發編譯錯誤,但它確實沒有做什么有意義的事,只是為了通過編譯罷了,稱之為“面向編譯”的異常捕捉,即只為通過編譯。

   程序發生異常時,要么用throws將異常踢給調用者,要么直接處理異常。假如打算直接處理異常,就必須對代碼中的異常分別處理,這樣才可以能夠異常的具體信息,以及具體是哪個異常引起的。對于程序的用戶來說,具體的錯誤信息可以讓他們更直接知道問題所在,而程序的調用者來說,具體的異常可以讓他們進行分別對待,分別處理,這種處理異常的方式稱為“面向問題”的異常捕捉。我們擬將這段代碼重構為以下的形式,如下所示:

   代碼清單 16 “面向問題”的異常捕捉

1. public void autoCatch()
2. {
3.  FileInputStream fis = null ;
4.  byte[] bArr = new byte[1024] ;
5.  try {
6.   //會拋出FileNotFoundException
7.   fis = new FileInputStream("D://1.txt") ;
8.   //會拋出IOException
9.   fis.read(bArr) ;
10.  }
11.  catch(FileNotFoundException ex) {
12.   System.out.println("D://1.txt文件不存在,請檢查") ;
13.  }
14.  catch(IOException ex) {
15.   System.out.println("D://1.txt文件讀寫發生異常,異常信息為:" +
16.   ex.getMessage()) ;
17.  }
18.  finally {
19.   if(fis != null) {
20.    try {
21.     fis.close() ;
22.    }
23.   catch(IOException ex1) {
24.    System.out.println("關閉文件輸入流的時候發生異常,異常信息為:
25.     " + ex1.getMessage()) ;
26.   }
27.  }
28. }
29. }

   你需要做的是刪除掉原來的“面向編譯”的異常捕捉代碼(即第5行和第10~12行),選中第6~9行,按Ctrl+Shift+C,JBuilder自動分析這段代碼,發現這段代碼中共有引發兩個異常,分別為每個異常生成兩個捕捉塊,代碼如下:

   代碼清單 17 通過Ctrl+Shift+C自動添加異常捕捉代碼塊

1. public void autoCatch()
2. {
3.  FileInputStream fis = null ;
4.  byte[] bArr = new byte[1024] ;
5.  try {
6.   //會拋出FileNotFoundException
7.   fis = new FileInputStream("D://1.txt") ;
8.   //會拋出IOException
9.   fis.read(bArr) ;
10.  }
11.  catch(FileNotFoundException ex) {
12.  }
13.  catch(IOException ex) {
14.  }

15. }
進入討論組討論。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平潭县| 左权县| 革吉县| 周至县| 永城市| 林芝县| 宁晋县| 耿马| 江北区| 磐安县| 淳化县| 墨脱县| 贺兰县| 汽车| 科技| 宿州市| 临江市| 洞头县| 朝阳县| 娄底市| 龙南县| 阿尔山市| 桓台县| 芜湖市| 普兰县| 威宁| 乐至县| 锦屏县| 泸水县| 巢湖市| 乐昌市| 于田县| 绵阳市| 黎平县| 东平县| 宝清县| 永德县| 明溪县| 城固县| 大石桥市| 遂平县|