Java開發規約
一、編程規約
命名風格
抽象類命名使用Abstract或Base開頭;異常類命名使用Exception結尾;測試類命名以Test結尾。
布爾類型的變量不要加is前綴。
如果模塊、接口、類、方法使用了設計模式,應在命名時體現出具體模式。
暴露出來的服務一定是接口,內部的實現類用Impl后綴與接口區別。
枚舉類名建議帶上Enum后綴,成員名稱全部大寫,單詞之間用下劃線隔開。
獲取單個對象的方法用get作為前綴。
獲取多個對象的方法用list作為前綴。
獲取統計值的方法用count作為前綴。
插入的方法用save/insert作為前綴。
刪除的方法用remove/delete作為前綴。
修改的方法用update使為前綴。
數據對象:xxxDO。
數據傳輸對象:xxxDTO。
展示對象:xxxVO。
不要使用一個常量類維護所有常量,要按常量功能進行歸類,分開維護。
采用4個空格縮進,禁止使用Tab控制符。
注釋的雙斜線與注釋內容之間有且僅有一個空格。
多個參數逗號后邊必須加一個空格。
OOP規約
直接用類名訪問靜態成員,避免通過一個類的對象引用訪問此類的靜態變量或靜態方法,造成無謂的編譯器解析成本。
所有覆寫的方法,必須加@override注解。
不使用過時的類或方法。
構造方法里面禁止加入任何業務邏輯,如果有初始化邏輯,要放在init方法中(java web)。
在循環體內,字符串的連接方式使用StringBuilder的append方法進行擴展。
不允許被繼承的類,使用final關鍵字修飾。
不允許修改引用的域對象,使用final關鍵字修飾。
不允許重寫的方法,使用final關鍵字修飾。
不允許運行過程中重新賦值的局部變量。
不允許外部直接通過new來創建對象,那么構造方法必須限制為private。
工具類不允許有public或default構造方法。
類非static成員變量并且與子類共享,必須限制為protected。
僅在本類中使用的變量,必須限制為private。
僅在本類中使用的方法,必須限制為private。
類成員方法僅對繼承類公開的,必須限制為protected。
集合處理
不要在foreach循環中進行元素的remove/add操作。remove元素請使用Iterator方式,如果并發操作,需要對Iterator對象加鎖。
使用entrySet遍歷集合K/V,而不是用keySet方式遍歷。
并發處理
獲取單例對象需要保證線程安全,其中的方法也要保證線程安全。
注釋規約
所有枚舉字段必須加注釋說明數據字段的用途。
其他
獲取當前毫秒數用System.currentTimeMillis()而不是用new Date().getTime();
二、異常日志
異常處理
finally塊必須對資源對象、流對象進行關閉操作。如果有異常也要做try-catch操作。
日志規約
日志文件推薦至少保存15天,因為有些異常具備以周為周期發生的特點。
三、單元測試
1、編寫測試代碼應遵守BCDE原則,以保證被測試模塊的交付質量。
B:Border,邊界值測試,包括循環邊界、特殊取值、特殊時間點、數據順序等。
C:Correct,正確地輸入,并得到預期的結果。
D:Design,與設計文檔相結合,來編寫單元測試。
E:Error,強制錯誤信息輸入(如非法數據、異常流程、非業務允許輸入等),并得到預期的結果。
四、安全規約
隸屬于用戶個人的頁面或者功能必須進行權限控制校驗。
用戶敏感數據禁止直接展示,必須對展示數據進行脫敏。
用戶輸入的SQL參數嚴格使用參數綁定或者METADATA字段值限定,防止SQL注入,禁止字符串拼接SQL訪問數據庫。
用戶請求傳入的任何參數必須做有效性驗證。
禁止向HTML頁面輸出未經安全過濾或未正確轉義的用戶數據。
五、MySQL數據庫
建表規約
varchar是可變長字符串,不預先分配存儲空間,長度不要超過5000個字符,如果存儲長度大于此值,則應定義字段類型為text,獨立出來一張表,用主鍵來對應,避免影響其他字段的索引效率。
表必備三個字段:id、gmt_create、gmt_modified。
表的命名最好加上“業務名稱_表的作用"。
庫名與應用名稱盡量一致。
當單表行數超過500萬行或者單表容量超過2GB時,才推薦進行分庫分表。
索引規約
超過3個表禁止join。需要join的字段,數據類型必須絕對一致;當多表關聯查詢時,保證被關聯的字段需要有索引。
頁面搜索嚴禁左模糊或者全模糊,如果需要請通過搜索引擎來解決。
SQL語句
禁止使用存儲過程,存儲過程難以調試和擴展,更沒有移植性。
不得使用外鍵與級聯,一切外鍵概念必須在應用層解決。
在代碼中寫分頁查詢邏輯時,若count為0應直接返回,避免執行后面的分頁語句。
謝謝閱讀。
Java SQL
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。