入職第一天 代碼規(guī)范

入職第一天,行業(yè)1部,主要負(fù)責(zé)石油犬第,政府項目等

java代碼規(guī)范:

命名規(guī)范:代碼中的不能以_和$開始和結(jié)束
禁止使用拼音和英文混合。
類名使用駝峰命名芒帕,首字母大寫
方法名首字母不大寫歉嗓,駝峰命名
常量名全部大寫,單詞間下劃線隔開
抽象類用Abstract或Base開頭背蟆;
異常類使用Exception結(jié)尾;
測試類使用類名開頭Test結(jié)尾
boolean命名前不加is
包名統(tǒng)一使用小寫鉴分,單數(shù)
避免不規(guī)范的縮寫
如果使用到了設(shè)計模式哮幢,建議在類名中體現(xiàn)出具體模式
接口類中的方法和屬性不要加任何修飾符并加上有效的javadoc注釋
接口和實現(xiàn)類的命名有2種規(guī)則
Service和Dao類暴露的接口,實現(xiàn)類使用Impl的后綴實現(xiàn)
對形容能力的接口名稱志珍,取對應(yīng)的形容詞做接口名
枚舉類名建議帶上Enum后綴橙垢,枚舉成員名稱全大寫,單詞間使用下劃線隔開
各層命名規(guī)范:service/dao:
獲取單個對象get前綴
獲取對個對象list前綴
獲取統(tǒng)計值count前綴
插入方法用save前綴
刪除方法remove前綴
修改update前綴
數(shù)據(jù)對象xxxDo xxx為表名
常量值long類型的賦值必須使用大寫例如:Long a = 1L;
不能使用一個常量類維護(hù)所用常量伦糯,應(yīng)該按常量的功能分類

格式規(guī)范:
大括號內(nèi)為空{(diào)}柜某;
否則 {
1
} else {
2
}
if / for / while / switch / do 等保留字與左右括號之間必須加空格
任何一個運算符最有必須加一個空格
縮進(jìn)采用4空格,禁止使用tab
單行字符數(shù)不超過120舔株,超出換行莺琳,且:
第二行相對第一行縮進(jìn)4個空格
運算符與下文一起換行
方法調(diào)用的點符號與下文一起換行。
多個參數(shù)超長载慈,逗號后換行
在括號前不要換行
方法參數(shù)在定義和傳入時惭等,多個參數(shù)逗號后必須加空格
不能使用過時的類和方法
Object的equals方法容易空指針,應(yīng)該使用常量或確定有值的對象來調(diào)用.equal
使用索引訪問用String的split方法得到的數(shù)組時办铡,需做最后的一個分隔符有無的檢查
當(dāng)一個類有多個工造方法辞做,或者多個同名方法,這些方法應(yīng)該按順序放在一起
循環(huán)體內(nèi)寡具,字符串的聯(lián)接方式使用StringBuilder的append方式進(jìn)行擴(kuò)展
聲明final的情況:
不需要重新賦值的變量秤茅,包含類屬性,局部變量
對象參數(shù)前final表示不永續(xù)修改引用的指向
類方法確定不允許被重寫

控制語句
if-else中盡量不適用else
多次if-else使用狀態(tài)設(shè)計模式
循環(huán)體內(nèi)不使用耗時操作
注釋規(guī)約:
類童叠,類屬性框喳,類方法的注釋必須使用javadoc規(guī)范,使用/*內(nèi)容/
所有的抽象方法學(xué)習(xí)要用javadoc注釋,除了返回值厦坛,參數(shù)五垮,異常說明外,還應(yīng)該指出做什么杜秸,實現(xiàn)什么
所有類都必須添加創(chuàng)建者信息
方法內(nèi)部單行注釋放仗,再被注釋語句上方另起一行,使用//注釋
所有的枚舉類型字段必須要有注釋撬碟,說明每個數(shù)據(jù)的用途

其他:
使用正則表達(dá)式時诞挨,利用好其預(yù)編譯功能
velocity調(diào)用POJO類的屬性時,建議直接使用屬性名取值即可呢蛤,模板引擎會自動調(diào)用惶傻。
后臺傳輸給頁面的變量必須加$!{}否則當(dāng)值為空時會直接顯現(xiàn)到頁面
Math.random()這個方面返回值是double獲取整數(shù)是使用Random對象的NextInt或者nextLong
獲取當(dāng)前毫秒數(shù)System.currentTimeMillis()
獲取納秒數(shù)System.nanoTimer()推薦使用Instant類
盡量不要在velocity模板中加入變量聲明,邏輯運算及復(fù)雜邏輯
任何數(shù)據(jù)結(jié)構(gòu)的構(gòu)造和初始化都應(yīng)該指定大小

異常處理:
不捕獲運行時異常
異常不要用來最流程控制其障,條件控制达罗,以為異常的處理效率比較低
對于非穩(wěn)定的代碼catch盡可能區(qū)分異常類型,在做處理
不能再finally塊中使用return,finally塊中的return返回方法結(jié)束執(zhí)行不再執(zhí)行try中的return語句
方法返回值可以為null但必須聲明為什么會返回null
定義時區(qū)分unchecked / checked異常,避免直接使用exception,應(yīng)該使用自定義異常
使用日志框架slf4j中的api
日志文件至少保存15天粮揉,日志輸出必須使用條件輸出形式或者使用占位符的方式
避免打印重復(fù)日志,在log4j.xml中設(shè)置additivity = false.

MySQL規(guī)約:
表達(dá)是否的概念必須使用is _ xx的方式命名抚笔,數(shù)據(jù)類型為unsigned tinyint 非負(fù)數(shù)必須使用unsigned
表名扶认,字段名必須使用小寫字母和數(shù)字;禁止出現(xiàn)數(shù)字開頭殊橙,禁止雙下滑線中間只出現(xiàn)數(shù)字
表名不使用負(fù)數(shù)名詞
禁用關(guān)鍵字
唯一索引名用uk _ 字段名辐宾;普通索引用idx_字段名
小數(shù)類型用decimal 禁止使用float和double.,如果存儲數(shù)據(jù)擦超出decimal的范圍,建議將數(shù)據(jù)拆成整數(shù)和小數(shù)分開存儲膨蛮。
如果存儲的字符串長度幾乎相等叠纹,使用char 定長字符串類型
varchar長度不要超過5000,如果存儲長度大于5000敞葛,定義字段類型為text誉察,獨立出來一張表,用主鍵來對用惹谐,避免影響其他字段索引效率持偏。
表必備三個字段,id,gmt _ create,gmt _ modified.
id為主鍵,類型為unsigned bigint,單表自增氨肌,步長為1.gmt_create,gmt_modified的類型均為date_time類型
表的命名最好是加上“業(yè)務(wù)名稱_表的作用”
數(shù)據(jù)庫名與應(yīng)用名一致
字段允許適當(dāng)冗余提高性能鸿秆,冗余字段應(yīng)遵守:
不是頻繁修改的字段
不是varchar等超長字段
單表行數(shù)超過500萬或者單表容量超過2GB才推薦使用分庫分表
業(yè)務(wù)上具有唯一特性的字段即使是組合字段,也必須建成唯一索引
超過三個表禁止join怎囚。需要join的字段卿叽,數(shù)據(jù)類型保持絕對一致;多表關(guān)聯(lián)查詢時恳守,保證保證被關(guān)聯(lián)的字段需要有索引考婴。
在varchar字段上簡歷索引時,必須指定索引長度井誉,沒必要對全字段建立索引蕉扮,根據(jù)實際文本區(qū)分度決定索引長度。
頁面搜索嚴(yán)禁左或者全模糊查詢颗圣,如果需要使用搜索引擎查詢喳钟。索引文件具有B-Three的最左前綴匹配特性,若果左邊的值未確定那么無法使用此索引在岂。
如果有order by 的場景奔则,請注意利用索引的有序性。
利用覆蓋索引來進(jìn)行查詢操作蔽午,來避免回表操作易茬。
利用延遲關(guān)聯(lián)或者子查詢優(yōu)化超多分頁場景
sql性能優(yōu)化的目標(biāo):至少達(dá)到range級別,正常ref,最好consts
consts單表中最多只有一個匹配行抽莱,在優(yōu)化階段即可讀取到數(shù)據(jù)范抓。
ref指的是使用普通的索引
range對索引進(jìn)行范圍搜索
建組合索引的時候,區(qū)分度最高的在最左邊
創(chuàng)建索引時注意:
誤認(rèn)一個查詢要建一個索引
誤認(rèn)索引會消耗空間食铐,嚴(yán)重拖慢更新和新增速度
誤認(rèn)唯一索引一律需要在應(yīng)用層先查后插
count(*)統(tǒng)計值為null的行
count (distinct col)計算該列除null外的不重復(fù)數(shù)量
注:count(distinct col 1,col 2)如果其中一列全為null匕垫,那么即使另一列有不同的值,也返回0
當(dāng)一列全為null時sum(m)返回null,所以使用sum()時注意NPE問題:select if(isnull(sum(g)),0,sum(g)) from table;
使用isNULL()來判斷字段是否為空虐呻,null與任何值比較都為null
在代碼中寫分頁查詢邏輯時象泵,若count為0應(yīng)該直接返回斟叼,避免執(zhí)行后面的分頁語句偶惠。
不得使用外鍵與級聯(lián),一切外鍵概念必須在應(yīng)用層解決朗涩。
禁止使用存儲過程忽孽,存儲過程難以調(diào)試和擴(kuò)展,更沒有可移植性
數(shù)據(jù)修定時馋缅,刪除和修改記錄時扒腕,要先select避免誤刪除
in操作盡量避免,無法避免保證in后面的集合元素數(shù)量控制在1000以內(nèi)
全球化需要萤悴,所有的字符存儲與表示都用utf-8
存儲表情時瘾腰,使用utfmb 4來存儲

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市覆履,隨后出現(xiàn)的幾起案子蹋盆,更是在濱河造成了極大的恐慌,老刑警劉巖硝全,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件栖雾,死亡現(xiàn)場離奇詭異,居然都是意外死亡伟众,警方通過查閱死者的電腦和手機析藕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凳厢,“玉大人账胧,你說我怎么就攤上這事∠茸希” “怎么了治泥?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長遮精。 經(jīng)常有香客問我居夹,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任准脂,我火速辦了婚禮劫扒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘意狠。我一直安慰自己粟关,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布环戈。 她就那樣靜靜地躺著,像睡著了一般澎灸。 火紅的嫁衣襯著肌膚如雪院塞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天性昭,我揣著相機與錄音拦止,去河邊找鬼。 笑死糜颠,一個胖子當(dāng)著我的面吹牛汹族,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播其兴,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼顶瞒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了元旬?” 一聲冷哼從身側(cè)響起榴徐,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎匀归,沒想到半個月后坑资,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡穆端,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年袱贮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片体啰。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡攒巍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出狡赐,到底是詐尸還是另有隱情窑业,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布枕屉,位于F島的核電站常柄,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜西潘,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一卷玉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧喷市,春花似錦相种、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至腹备,卻和暖如春衬潦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背植酥。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工镀岛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人友驮。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓漂羊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親卸留。 傳聞我的和親對象是個殘疾皇子走越,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)艾猜,斷路器买喧,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法匆赃,內(nèi)部類的語法淤毛,繼承相關(guān)的語法,異常的語法算柳,線程的語...
    子非魚_t_閱讀 31,632評論 18 399
  • 來源與:阿里云棲 禁止用于商業(yè)用途 ps:如果需要電子書 評論你們郵箱 我會發(fā)給你們 下面感覺還是有點亂 目錄 一...
    小向資源網(wǎng)閱讀 7,585評論 0 12
  • 關(guān)上門低淡,打開音箱,你可曾聽過這樣的歌 吉他像棉花糖瞬项,鋼琴的白鍵是牛奶云朵蔗蹋,黑鍵是太妃糖 聽起來像是巧克力在嘴里融化...
    FO_閱讀 335評論 0 2
  • cocos2d-x技術(shù)群新群:117871561c++技術(shù)交流群:593010226第一種:高德定位的接口 第二種:
    亮亮同學(xué)閱讀 521評論 0 0