熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

巧用JBuilderX代碼美化工具

2013-11-23 18:47:18  來源: Java核心技術 

  關鍵詞 JBuilderX 代碼格式化 代碼美化 代碼模板
  引言
  代碼編寫風格主要包括變量方法類等語言實體的命名和代碼排版布局兩方面評價代碼質量的高低不僅取決於算法和數據結構代碼排版布局也是一個不可或缺的方面隨著現代軟件規模的擴大團隊開發在所難免好的代碼編寫風格增強了代碼可讀性和維護性提高了團隊協作的效率
  
  JBuilder被譽為java航空母艦級的開發工具目前的最高版本是命名為JBuilderX本文著重介紹如何在JBuilderX中美化代碼格式化代碼排版布局同時還將介紹JBuilderX加速代碼編寫的一些實用技巧
  
  代碼美化工具
  市面上已經有很多代碼美化的工具軟件比較著名的有IndentastylejalopySourceFormatX 等其中SourceFormatX是一個多語言的代碼美化工具但這些工具沒有和開發工具很好的集成且不易操作功能也不夠強大或不針對專門的java語言JBuildeX集成了一個強大的代碼排版布局格式化工具在您編寫好代碼後可以通過它來美化您的代碼它可以對代碼做以下個方面的格式化工作
  
  ) 縮進java代碼以{}劃分的不同代碼子域裡層的域比外層的域需要縮進一些以使代碼有層次感通過該工具可以定義裡層相對外層代碼縮進的空格數Tab鍵對應的空格數;
  
  ) 分行類定義方法定義以及控制代碼如ifelse while try catch等都有對應的{}以組織其代碼區域您可以指定{}是否另起一行;
  
  ) 空格指定在操作符小括號()中括號[]分號;等符號和操作代碼之間是否需要空格;
  
  ) 空行允許您指定代碼裡哪兒需要加入空行以及空行數使不同的代碼域之間區分得更加清晰;
  
  ) 換行對齊指定代碼行的最大列數超過列數的代碼行會被智能拆分成多行只有包含了操作符或逗號的代碼行才可以被換行您可以指定換行點是在這些符號前面還是後面同時您還可以設定換行後多行的對齊方式;
  
  ) 代碼生成規則控制自動事件句柄變量可視域及javaBean實例化的代碼生成規則;
  
  ) import代碼優化規則控制類中import代碼引入的包和類如何生成及它們排序的先後順序以優化import代碼段
  
  創建java工程後在主窗口左上角的工程面板的工程文件(xxxjpx)上點擊鼠標右鍵按以下操作調出代碼美化工具設置界面
  選擇Properties>在彈出窗口左邊的樹中選擇Fomatting得到如圖的操作窗口界面
  
  
 educitycn/img_///gif >

  窗口的右邊有個頁標簽分別對應上面所談到的個方面的代碼設置每一個設置頁左邊對應若干個設置項右邊是代碼格式化的預覽效果這樣您就可以即時了解設置項是如何影響代碼的排版布局下一節我將以具體的例子示范如何使用這個代碼美化工具
  下面是一個簡單的java類代碼其功能非常簡單是將兩個雙精度數按要求相加或相減再將其結果值四捨五入為一個整數該例子只是為了演示代碼格式化您大可不必追究代碼的功能
  
  package format;
  import javalangMath;
  import javautil*;
  public class FormatSample {
  private int i;
  private int j;
  public FormatSample() {}
  public long add(double idouble jboolean isAdd){
  double k ;
  if(isAdd){k=i+j;}
  else{k=ij;}
  Systemoutprintln(today is +((new Date())toString())+the operation of+i+(isAdd?+:+)+j+ equals +k);}}
  
  這段代碼的排版布局非常差雖然只是一小段也會給閱讀者造成暈旋效果這一小段代碼在布局上的症結可以歸納為以下幾項
  
  )裡外層代碼域處於相同列沒有用縮進形成層次布局
  
  ) ifelse的代碼塊的大括號{}和代碼處於同一行
  
  ) 操作符和操作數之間沒有用空格分開
  
  ) import代碼塊 和 class定義以及方法和方法代碼塊之間沒有空行分隔擠成一團
  
  ) Systemoutprintln那行太長在IDE窗口中需要移動水平滾動條才可以看到隱藏的代碼
  
  ) import 的代碼行引入了過多的類FormatSample類只需要引入javautilDate這個類就可以了
  
  對以上這些排版布局缺陷進行修正我們希望得到了以下版本的的代碼
  package format;import javautilDate;public class FormatSample
  {
  private int i;
  private int j;
  public FormatSample()
  {
  }
  public long add(double i double j boolean isAdd)
  {
  double k;
  if (isAdd)
  {
  k = i + j;
  }
  else
  {
  k = i j;
  }
  Systemoutprintln(today is + ( (new Date())toString())
  + the operation of + i
  + (isAdd ? + : + ) + j + equals + k);
  return Mathround(k);
  }
  }
  我們通過以下設置步驟來格式化FormatSample類的代碼在設置代碼格式化後必須在代碼頁面中點擊鼠標右鍵選擇Format All按鈕格式化代碼你也可以在項目窗口的樹中選擇項並點擊右鍵選擇Format package 來格式化整個項目的所有代碼
  
  
 educitycn/img_///gif>

  ) 使代碼裡外層代碼區域形成層級縮進的布局
  
  切換到代碼美化工具設置界面的Basic標簽頁設置block indent的縮進空格數默認的裡層代碼比外層代碼縮進個空格這對於使用拉丁語系的國家是比較適合的對於使用漢語的編程者應用調成個空格會更好一些因為個空格才對應一個漢字的長度
  
  ) 使代碼塊的正反大括號放置在新行中並且使對應的大括號在列上對齊
  
  切換到Blocks的標簽面將左邊樹的所有復選框都鉤選這樣所有大括號都會另起一行而且成對的大括號會在列上對齊通過在列上對應的成對大括號我們能夠非常容易劃分出代碼塊將所有大括號(除數組初始化的大括號外)另起一行放置比不另起一行放置的代碼可讀性更強我認為在下面的兩種代碼布局形式中右邊的代碼比左邊的代碼具有更好的可讀性
  
  if(true){
  /**do sth*/
  }
  else{
  /**do sth*/
  } if(true)
  {
  /**do sth*/
  }
  else
  {
  /**do sth*/
  }
  
  ) 操作符和操作數之間插入空格
  
  切換到Spaces標簽頁該頁面左邊選項樹從上到下分為個設置項組分別設置代碼中分號;前後的空格小括號()和方法名關鍵詞及裡面嵌套小括號之間的空格逗號前後的空格小括號和中括號和其包含的代碼之間的間距空格歸為Others的一些雜項空格項目的設置通過點擊設置項前的復選框右邊的預覽窗口將給出設置後的代碼效果下圖是我們代碼格式化所用的設置
  
  
 educitycn/img_///gif>

  ) 在代碼不同部分之間插入空行
  
  java語言的結構化相比於CPascal等其他語言的結構都要清晰嚴謹代碼組織結構按先後順序依次是包定義引用類加載類聲明全局變量聲明和方法聲明可以在這些不同部分的代碼間插入空行使代碼不同部分看起來一目了然空行的設置在Blank Lines的標簽頁中在這個頁面中你不但可以設置在哪兒插入空行還可以設置插入空行的數目如您可以在import代碼部分和類定義代碼部分之間加入兩個空行全局變量定義代碼之間可不插入空行方法和方法之間插入一個空行
  
  ) 讓太長的代碼行自動換行
  
  代碼編寫窗口大小有限太長的代碼行需要移動水平滾動條才可以查看將代碼窗口滾動到右邊時左邊的代碼又看不到了造成神龍見首不見尾的現象嚴重影響代碼的可讀性和閱讀效率JBuilderX在Fomatting窗口的Wrapping標簽頁中提供了智能換行的設置功能您可以在Wrap after column中設置代碼行的長度還可以設置代碼行換行的依據符號代碼行中的逗號操作符是代碼行自動換行的依據符
  
  JBuilderX在自動換行中提供的另一個精制的功能可以指定單行拆分成多行後這些行的對齊方式你可以指定多行頭部和(對齊或和=對齊建議將兩者都鉤選格式化後例子中的Systemoutprintln()代碼行變成了三行後兩行代碼和對齊
  
  ) 優化import代碼塊
  
  切換到Formatting窗口的最後一個Imports標簽頁對import代碼塊做優化設置JVM會自動加載javalang*包所以例子中的import javalangMath;是多余的此外類中只用到javautil*包中的一個類javautilDate無需引入包中的其他類JBuilderX的import代碼優化功能允許你設置一個阈值在當前類中引用到包中的類數目小於這個阈值時它就會將包名後的*替換成具體的類名您也可以通過鉤選設置頁面中的Always import classes復選框使import在任何時候都將包後的*替換成具體的類名(注意通過在代碼窗口中點擊右鍵選擇Format All格式化代碼不執行import代碼的優化設置你可以在代碼窗口中按Ctrl+I快捷鍵或用圖的操作步驟來執行import代碼的優化)
  其他加速代碼編寫及排版布局的技巧
  
  ) 用模板加速代碼的錄入保證排版布局上的一致性
  
  JBuilderX提供了豐富的代碼模板通過
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25730.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.