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

JAVA規則 開發篇

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

  本文介紹的JAVA規則的說明分為個主要級別本篇拋棄了平時開發中很少遇到的情況那些用得比較少的以後再高級篇裡面出現並有六個有用的國際軟件開發重要注意的有關String的問題遵守了這些規則可以提高程序的效率使代碼又更好的可讀性等
  
  () 如果有JDBC連接沒有關掉的話需要在finally方法中關掉
  如果數據庫連接失敗或者是沒有釋放連接看上去無關緊要但是其他的用戶就需要用更長的時間等待連接這樣數據庫利用效率就會下降確保你的代碼在任何情況下包括出錯或者程序異常終止的情況下都釋放數據庫連接finally方法中關掉連接就可以確保這一點
  錯誤示例
  try {
  Statement stmt = concreateStatement();
  } catch(SQLException e) {
  eprintStackTrace();
  }
  正確示例
  try {
  Statement stmt = concreateStatement();
  } finally {
  if (con != null && !conisClosed()) {
  conclose();
  }
  }
  
  () 盡量避免使用Threadresume () Threadstop () Threadsuspend ()RuntimerunFinalizersOnExit () 方法
  這些方法在平時的開發或者是教科書裡面也有用到過但是這些方法會導致四鎖的傾向一下有充足的資料來說明為什麼不建議用上述方法
  參考javalangThread in the JDK API documentation
  
  Paul Hyde: Java Thread Programming
  Sams ISBN: pp
  
  () 在表示長整常量的時候用L來代替l
  因為l很容易和混一起
  錯誤示例
  long temp = l;
  正確示例
  long temp = L;
  參考Ken Arnold James Gosling: The Java Programming Language Second EditionAddison Wesley pp
  
  () 最好在jsp開頭寫一條注釋
  在 jsp文件頭上面寫一條注釋這樣可以幫助別人來理解你的代碼這條規則不僅適用於jsp更是用於任何開發的文檔
  正確示例<% JSP comment %>
  
  ()明確的初始化一個構造類裡面的所有的字段
  因為沒有初始化的字段會是一個潛在的bug所以最好初始化類裡面的所有的字段特別是靜態的字段最好在一開始就分配一個初始值
  錯誤示例
  public class CSI {
  public CSI () {
  this ();
  k = ;
  }
  
  public CSI (int val) {
  j = val;
  }
  
  private int i = ;
  private int j;
  private int k;
  }
  
  正確示例
  public class CSIFixed {
  public CSIFixed () {
  this ();
  }
  
  public CSIFixed (int val) {
  j = val;
  k = ;
  }
  
  private int i = ;
  private int j;
  private int k;
  }
  參考
  
  () 國際化開發建議邏輯操作符不要再一個單個的字符的前面或者後面
  一個單個字符的前後不要用邏輯操作符如果代碼要在一個國家環境中運行的話我們可以使用字符比較方法這些方法使用統一字符比較標准來定義字符的屬性的
  錯誤示例public class CLO {
  public boolean isLetter (char ch) {
  boolean _isLetter = ( ch >= a && ch <= z) //錯誤
  || (ch >= A && ch <= Z);
  return _isLetter;
  }
  }
  
  正確示例
  public class CLOFixed {
  public boolean isLetter (char ch) {
  boolean _isLetter = CharacterisLetter(ch);
  return _isLetter;
  }
  }
  參考
  更多的字符比較方法請參考
  
  () 國際化開發建議不要對日期對象使用DatetoString ()
  不要使用DatetoString ()方法日期格式對於地區和語言不同的國家來說是不一樣的務必不要使用
  錯誤示例DateFormat類提供了一個預定義的格式類型來指定本地的格式
  public void printToday () {
  Date today = new Date ();
  String todayStr = todaytoString ();
  Systemoutprintln (todayStr);
  }
  正確示例
  public void printToday () {
  Locale currentLocale = LocalegetDefault ();
  DateFormat dateFormatter = DateFormatgetDateInstance (
  DateFormatDEFAULT currentLocale);
  Date today = new Date ();
  String todayStr = dateFormatterformat (today);
  Systemoutprintln (todayStr);
  }
  參考
  l
  
  () 國際化開發建議不要對數字變量使用toString ()方法
  在全球化的開發中不要對數字變量使用toString ()方法對於javalangNumber的任何子類都適用包括BigDecimal BigInteger Byte Double Float Integer Long and Short對於這樣的情況java裡也與定義了NumberFormat方法來格式化
  錯誤示例
  public class NTS {
  public void method (Double amount) {
  String amountStr = amounttoString ();
  Systemoutprintln (amountStr);
  }
  }
  正確示例
  public class NTSFixed {
  public void method (Double amount) {
  Locale currentLocale = LocalegetDefault ();
  NumberFormat numberFormatter =
  NumberFormatgetNumberInstance (currentLocale);
  String amountStr = numberFormatterformat (amount); //
  Systemoutprintln (amountStr + + currentLocaletoString ());
  }
  }
  參考
  tml
  
  () 國際化開發建議:不要使用Stringequals ()方法
  建議不要使用Stringequals ()方法因為在統一字符比較標准中不一定按照相關的順序來比較Collator提供的預定義整理規則來排序stringCollator類調用getInstance ()方法一般來說可以為默認的本地創建一個Collator例如Collator myCollator = CollatorgetInstance ();創建Collator的時候你也可以指定一個特殊的locale例如Collator myFrenchCollator = CollatorgetInstance (LocaleFRENCH);然後就可以調用pare ()來執行一個本地的字符比較pare (ss);從這裡可以了解更多的有關Collator類的信息tml
  
  錯誤示例
  public class SE {
  public boolean compstr (String s String s) {
  boolean b = (sequals (s));
  return b;
  }
  }
  正確示例
  public class SEFixed {
  public boolean compstr (String s String s) {
  Collator myCollator = CollatorgetInstance ();
  boolean b = (pare(ss) == );
  return b;
  }
  }
  
  參考
  
  
  () 國際化開發建議不要使用StringTokenizer()方法
  錯誤示例StringTokenizer st = new StringTokenizer(str);
  可以從這裡得到更多的信息
  參考
  
  () 國際化開發建議不要使用TimetoString ()方法
  因為時間的格式各個國家也不一樣如果你使用日期格式類你的應用就能夠在世界上各個地方正確的顯示時間和日期了首先getTimeInstance ()方法創建一個formatter然後調用format ()方法
  錯誤示例
  public class TTS {
  public void printTime (Time t) {
  String timeStr = ttoString ();
  Systemoutprintln (timeStr);
  }
  }
  正確示例
  import javasqlTime;
  import javatextDateFormat;
  import javautilLocale;
  
  public class TTSFixed {
  public void printTime (Time t) {
  DateFormat timeFormatter = DateFormatgetTimeInstance(
  DateFormatDEFAULT LocalegetDefault ());
  String timeStr = timeFormatterformat(t);
  Systemoutprintln (timeStr);
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25840.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.