當年真是充滿活力啊,大概12年年中,完成了人生第一個項目,總結了30條代碼經驗,過去幾年了,分享下咯....
適合1年左右新手閱讀喔
代碼規範:
一、DAO:所有的關於session的用try。。catch。。finally
在try中執行,finally中colse session
二、頁面的增改,將對象 填充到頁面。。。。
刪除的時候:可以學增加,刪除,前提是,先查詢得到對象,修改不需要,因爲可以修改本來就能獲得對象
三、刪除:刪除後 page保持不變 傳id,不涉及到模型對象
Page模式的時候,在tolist 的時候也要將page放入request中,在tolist的時候初始化page,關於ESP系統中的分頁 由一汽大衆任務管理中的分頁爲準,所有的提交用函數提交,在函數上加分頁標識,最簡單的也用函數提交
四、各種驗證,各種空值,需要多加註意
五、封裝list判斷方法
list!=null &&list.size()>0 return true or false
六、以後jdk版本不低於jkd1.6.5
七、Action中page用構造方法實例化
八、CheckBOX不勾上就沒法傳值
九、當數據的處理很頻繁的時候有可能從數據庫中查詢出來的是空的
現在的解決方式是用for循環重新查詢,有數據則break,else,,,continue.(根本的解決方式是,後臺邏輯儘量不用對象查詢)。儘量一句sql完成一個功能。當然在系統的關鍵部位都要加for循環和日誌。
十、寫代碼,先寫註釋,將要實現的什麼功能先寫好,
將註釋寫完後,在註釋中添加代碼。
代碼的前後臺儘量分開,後臺代碼儘量用sql,而前臺代碼可以用HQL。
十一、儘量想辦法一個方法中最多開一個session,
而session中做的事情只是和數據庫交互。
也就是效率第一
十二、在代碼中寫死的任何參數用常量類封裝或者用一個配置文件封裝,
正代碼中不得存在任何寫死的變量或常量
十三、在使用一個新的版本的時候 儘量先去看看他有一些什麼新的功能或者優化
在和數據庫交互的時候全部用for+try的結構
十四、關於jdbc的resultSet,set值的時候要記住按照查詢出來的順序set,否則會報‘流已關閉’哦
十五、Java 中的按位或 a |=b;意思是把a和b都換成2進制然後賦值給a,意思是a= a|b;a|b是一種算法
&:當兩邊操作數的位同時爲1時,結果爲1,否則爲0。如1100&1010=1000
| :當兩邊操作數的位有一邊爲1時,結果爲1,否則爲0。如1100|1010=1110
~:0變1,1變0
^:兩邊的位不同時,結果爲1,否則爲0.如1100^1010=0110
十六、程序的好壞評估
一個程序,一個系統是否優秀,不是他的代碼有多優秀,算法有多精妙,而是他的適應性。一個優秀的程序必須有很強的適應性,特別是對於敏捷軟件來說。
對於敏捷軟件來說,需求必定是源源不斷的改變,程序要能及時的適應這些需求,改的最少的情況下來實現相應需求,當然這也對代碼的要求有些偏高 ,有時候甚至會降低代碼性能,這些付出一般情況下都是值得的。
一個好的程序追求高複用,一個好的工具被多次複用是大家都追求的,就像當前流行的很多框架一樣。當然這裏的複用工具一定要制度化,很多敏捷軟件開發小組最缺乏的就是這點,很多人寫wangNiMaUtil。我表示非常的鄙視
一個好的程序,最重要的不是他的代碼,而是是否有一套和他緊密相連的文檔。這裏的文檔包括需求文檔、設計文檔、架構文檔、數據字典、(UML圖)、技術文檔、僞代碼。
十七、軟件質量
軟件的質量通常是指一個測試小組(質量保證小組)來確定,如果質量不行就交給程序猿進行返工。其中有兩項重要的標準。
1.缺陷發現率
2.缺陷密度
缺陷發現率,失敗的測試用例/所有經過測試的用例數。
缺陷密度,一般以1000行代碼爲一個單位,發現的缺陷個數,平均下來的數值就是缺陷密度,缺陷密度越高代表軟件的質量越差。
PS:一般來說80%的缺陷出現在20%的代碼中。
十八、冪等性
冪等性是指HTTP請求中一次到N次請求的副作用
十九、REST------一個資源有一個唯一ID(一個唯一的URL對應某個文件或者某段信息<原子信息>)
二十、MYSQL Sql中數字相加,用ifnull()判斷 ,如ifnull(null,0),null+數字爲null
二十一、四種事務處理方式
1.Supports
Supports:如果有帶有事務的方法調用該方法,則使用事務,否則不使用。
2.NoSupports
NoSupports:絕對不支持事務,反正就是不會支持事務.如果一個帶有事務的方法調用它,它將先把事務停掉,然後執行完畢,然後再將對應事務重新開啓。
3.Requried
Requried:如果當前有空閒事務則使用空閒事務,如果沒有則重新創建一個事務
4.New Requried
無論如何都會重新創建一個事務
二十二、Mybatis中用in、exist、not in等函數要用$符號,而不是和其他的一樣用#
二十三、RGB取色
RGB是按照16進制進行選取,16進制的代表字符是0-9,A-F。
顏色的位數是6位,那麼比如00FF11(00代表R-red,FF代表G-gree,11代表B-blue),這個顏色就是帶有一點點藍色的深綠色。
所以如果要是紅色,則可以直接寫FF0000,需要黑色FFFFFF,需要紫色FF00FF.....F代表最大,0代表最小,可以根據需要調。知道原理就不需要嚴重依賴取色器了
二十四、Ajax請求<option>的value只能爲數字,否則將會沒有任何反應,用GOOLE瀏覽器進行調試,發現返回400 bad request
二十五、MYSQL字符串寫條件爲 = 數字的時候會忽略該條件 如varchar類型的sid寫成sid=0則會忽略該條件
二十六、建索引
1.越不重複效率越高,(那種狀態的字段就不用建了)
2.有可能爲null的不要建立,遇到null也無法建立
3.查詢頻率
二十七、注意left join 中的條件和where後的條件
如 left join table1 on XX=OO and table1.XX=1
& left join table1 on XX=OO where table1.XX=1