錯誤案例
public class CheckCycle { public void cycleInfo() { String[] Str = null; //獲取各個部件的通知地址 Str = outNotify.getResult(); StringBuffer sb = null; BufferedReader in = null; Connection conn = null; APLResultSet rs = null; String sql= ""; File file = null; for (int i = 0; i < Str.length; i++) { //錯誤1 if( null != Str) { System.out.print(Str[i]); } //錯誤2 conn = DB.getConnection(); //打開數據庫連接 //錯誤3 try { //錯誤4 in = new BufferedReader(new FileReader(file)); //讀取文件內容 sb = new StringBuffer(); …… } catch (IOException ex) { Throw ex; } } } }
錯誤分析
錯誤1:判斷完全可以在for外部進行而不是在循環體內部。
錯誤2:不要在循環中獲取數據庫連接。
錯誤3:循環體內進行不必要的try-catch操作,完全可以放在循環外邊。
錯誤4:減少在循環中不必要的IO操作。
正確用法
public class CheckCycle { public void cycleInfo() { String[] Str = null; //獲取各個部件的通知地址 Str = outNotify.getResult(); StringBuffer sb = null; BufferedReader in = null; Connection conn = null; APLResultSet rs = null; String sql= ""; File file = null; if( null != Str) //判斷移到循環體外面 { try { conn = DB.getConnection();//打開數據庫連接 in = new BufferedReader(new FileReader(file)); //讀取文件內容 for (int i = 0; i < Str.length; i++) { System.out.print(Str[i]); sb = new StringBuffer(); …… } } catch (IOException ex) { Throw ex; } } } }