1.在連接字符串的時候盡量避免使用String= "str"+"str2"; 而使用StringBuffer str = newStringBuffer("str");str.append("str2")代替
2. 多使用PreparedStatement代替Statement 這樣可以避免在拼接字符串的時候出現(xiàn)"select* fromtablename where col = '"+col+"'"單引號過多的情況,3在拚接查詢語句的時候加上"where1=1 "道理:當(dāng)你有很多查詢條件的時候,你不知道那些個會有,哪些個沒有,如果一個沒有的話,是不是就不用where 子句了呢
3.如果只有一個條件的話,是不是只要一個where 子句就搞定了呢?又如果有2 個以上,就需要用and 來連接了。。基于上訴的情況,勤勞的程序員們想出了一個好用的辦法,加個where 1=1后面不管有多少個條件有則加and,沒有的話就什么都不用做,相比較之前的3 中情況的判斷來說,比較方便。這種sql 開關(guān)代碼,可是編程中的大忌啊!首先這么寫的目的是預(yù)留開關(guān),給今后參數(shù)的改變帶來方便,但這樣同時會造成數(shù)據(jù)庫對該條語句的explainplan 不能做到完全穩(wěn)定不變,而且也會造成代碼不能被sgaping 在內(nèi)存里,如果是頻繁被調(diào)用的代碼會造成很嚴(yán)重的性能問題,深入的原理大家可以從dba 方面的書籍中找到。這種開關(guān)代碼在10 來年前大行其道,但現(xiàn)在隨著各公司水平的提高基本都能根據(jù)自身需要實(shí)現(xiàn)個性化的orm 層了,所以早已經(jīng)被證明是不好的設(shè)計。
4.多使用MessageFormat類
5.代碼中盡量少出現(xiàn)"123".equals(str)這樣的危險字符,而要public static final StringSTR = "123"; STR.equals(str)去代替.
6.方法的命名要能夠表達(dá)出方法的功能在for 循環(huán)里要注意for(int i = 0; i < 調(diào)用某個方法返回值;i++)這種寫法要改成 int y = 調(diào)用某個方法返回值;for(int i = 0;i < y;i++)
(1) 使用Integer.valueOf()代替new Integer();
(2) if (result.size() > 0) return true;
return false; 可以優(yōu)化為returnreturn result.size()>0
(3) 使用"const".eqauls(variable)代替variable.eqauls("const")避免nullpoint exception
(4) 在使用字串的拼接的時候,建議使用StringBuffer 代替String
(5) 在進(jìn)行數(shù)據(jù)庫操作的時候用PreparedStatement代替Statement,可以避免因?yàn)橐栠^多而引起的錯誤
(6) 在進(jìn)行復(fù)雜查詢語句的拼接的時候,建議加上"where 1=1",當(dāng)然在不考慮數(shù)據(jù)庫的性能.
(7)try{}catch(Exception e){}finally{if(conn!=null){conn.colse();conn==null}}在使用數(shù)據(jù)庫操作的時候盡量多用finally 語句,進(jìn)行資源的釋放。
(8) 在進(jìn)行多異常捕獲的時候,最后建議加上Exception異常做沒有考慮到的異常捕獲,比如try{}catch(OtherException e){}catch(Exception e){}finally{if(conn!=null){conn.colse();conn==null}}
(9) 給每個if(condition){}都加上大括號,即使里面只有一句話,加強(qiáng)程序的可讀性
(10)能用常量的東西都要用常量來完成,避免使用硬編碼,增加可維護(hù)性質(zhì)。比如少用String str ="123"使用private static final CONST ="123" ; String str = CONST;
(11) 定義的靜態(tài)的常量用全大寫,方法名開頭用小寫,類名用大寫。在bean 中定義的變量名用小寫,并且所有的名字命名要體現(xiàn)出業(yè)務(wù)的特性。呵呵,這里說到了規(guī)范。。。
(12) 多看看Apache 下的一些Utils 包吧!方便實(shí)用,必備工具!
(13) 可以用for(inti= 100;i>0;i--;)去代替for(inti = 0;i <100;i++) 這樣可以提高程序的運(yùn)行速度
(14) 寫注釋有助于寫出邏輯清晰的代碼
(15) 用字符分隔多字符串時,為了防止字符串中有設(shè)定的分隔符,我采用如下字符進(jìn)行分隔(c#的,JAVA 也差不多)char char2 = '\x0012';string strreg = ""; strreg += char2;