Java開發規約

      網友投稿 882 2022-05-29

      一、編程規約

      命名風格

      抽象類命名使用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,邊界值測試,包括循環邊界、特殊取值、特殊時間點、數據順序等。

      Java開發規約

      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小時內刪除侵權內容。

      上一篇:2022CANN訓練營新手模型開發課學習筆記
      下一篇:wordpress 內容備份鏡像站點建立方法及注意事項
      相關文章
      亚洲男人的天堂网站| 久久99国产亚洲精品观看| 亚洲成色WWW久久网站| 亚洲1区2区3区精华液| 亚洲欧洲国产综合| 亚洲福利视频导航| 国产亚洲美女精品久久久久狼| 亚洲国产香蕉人人爽成AV片久久| 亚洲日韩国产二区无码| 亚洲人xxx日本人18| 亚洲欧洲国产成人精品| 亚洲黄色免费在线观看| 亚洲av无码无在线观看红杏| 亚洲一级Av无码毛片久久精品 | 亚洲一区二区三区免费在线观看| 亚洲福利一区二区精品秒拍| 亚洲精品在线电影| 亚洲乱码一二三四区乱码| 亚洲综合中文字幕无线码| 在线综合亚洲欧洲综合网站| 亚洲永久网址在线观看| 国产午夜亚洲精品| 亚洲GV天堂GV无码男同| 国产精品亚洲а∨无码播放不卡 | 亚洲精品乱码久久久久久蜜桃图片 | 亚洲jizzjizz在线播放久| 亚洲中文字幕无码爆乳app| 亚洲欧美日韩一区二区三区在线| 亚洲av永久无码精品秋霞电影秋| 国产精品亚洲专区无码唯爱网 | 久久亚洲精品国产精品| 亚洲理论片在线观看| jlzzjlzz亚洲jzjzjz| 亚洲爆乳成av人在线视菜奈实 | 亚洲精品国产啊女成拍色拍| 亚洲国产精品成人精品小说| 午夜在线a亚洲v天堂网2019| 激情无码亚洲一区二区三区| 亚洲人成人无码网www国产| 亚洲精品少妇30p| 91亚洲精品第一综合不卡播放|