循環體內包含了大量沒有必要在循環中處理的語句或獲取數據庫連接或進行不必要的try-catch操作

錯誤案例

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;
          }
        }
    }
}

發佈了26 篇原創文章 · 獲贊 2 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章