代碼走查(codereview)如何執(zhí)行才能提升代碼質(zhì)量

????作為一名開發(fā)工程師,如何提升個人能力荤西、減少bug的發(fā)生是一件非常重要的事情,它直接關(guān)系到了領(lǐng)導(dǎo)及項(xiàng)目組對你能力的認(rèn)可。層出不窮的bug靜下心來好好歸類邪锌,無非是需求不明確勉躺、配置問題、請求參數(shù)問題觅丰、數(shù)據(jù)庫讀和寫時的并發(fā)問題饵溅、越權(quán)問題、冪等性問題妇萄,進(jìn)而導(dǎo)致了數(shù)據(jù)庫鎖表蜕企、空指針系統(tǒng)異常、內(nèi)存溢出等現(xiàn)象冠句。
????很多公司都會做代碼走查(codereview)糖赔,走查過程中更多的是相關(guān)人員憑借自身的經(jīng)驗(yàn)及公司的代碼規(guī)范制度去檢查代碼規(guī)范、代碼性能等轩端。若過程中參與人的經(jīng)驗(yàn)很豐富放典,則確實(shí)能提升代碼的質(zhì)量,減少bug和事故的發(fā)生基茵。若大家的水平都一般般奋构,走查也會趨于一種形式,bug還是會不斷的出現(xiàn)拱层。
????本人結(jié)合開發(fā)過程中的各種bug及事故情況弥臼,特總結(jié)了如下一些場景,可在代碼走查之前先行閱讀加強(qiáng)代碼質(zhì)量的意識根灯,同時作為代碼走查的checklist點(diǎn)一起排查径缅。

代碼走查checklist.png

禁止在大循環(huán)中逐條調(diào)Service,SQL烙肺,Redis

  • 關(guān)于Service的調(diào)用
    服務(wù)本身:提供批量接口纳猪;
    調(diào)用方:盡可能的以批量方式調(diào)用取代逐條調(diào)用,減少系統(tǒng)開銷桃笙;
  • 關(guān)于SQL的循環(huán)調(diào)用
    主要針對查詢氏堤,盡可能的將逐條查詢轉(zhuǎn)化為一次查詢一個批次,減少與數(shù)據(jù)庫交互次數(shù)搏明。

禁止3B:Big Transaction鼠锈,Big SQL,Big Batch

Big Transaction
  • 注意點(diǎn):
  1. 對數(shù)據(jù)庫操作必須使用事務(wù)星著,不能使用自動提交购笆,盡量使用聲明式事務(wù);
  2. 讓事務(wù)盡可能的小,在Service層組裝數(shù)據(jù)虚循,在manager層處理事務(wù)同欠;
  3. 不要在事務(wù)里調(diào)用服務(wù)(服務(wù)可能阻塞)样傍;
  4. 不要在事務(wù)里調(diào)用Redis;
  5. 在事務(wù)中批量更新要排序行您,確保多事務(wù)并發(fā)時铭乾,避免資源鎖等待。
  • 詳解:
    無論是Oracle娃循、SqlServer還是Mysql炕檩,大事務(wù)是一定要避免的,大事務(wù)容易造成鎖資源的長時間占用捌斧,從而降低并發(fā)性能笛质,增大死鎖概率。如下是幾種大事務(wù)的典型場景:
  1. @Transactional打在Class上捞蚂,這樣類中的所有方法均在事務(wù)邊界內(nèi)妇押,容易造成大事務(wù),@Transactional應(yīng)該控制更精細(xì)一些姓迅,打到方法級敲霍;
    2)在一個事務(wù)中要更新多張表,在更新每一張表之前都要處理一堆業(yè)務(wù)邏輯(查詢丁存、運(yùn)算肩杈、調(diào)用服務(wù)等等),正確的做法應(yīng)該是將查詢解寝、運(yùn)算和服務(wù)調(diào)用邏輯提到事務(wù)外扩然,事務(wù)邊界內(nèi)盡可能只處理表更新操作;
Big SQL
  • SQL使用:
  1. 盡量不用表關(guān)聯(lián)聋伦,如果使用表關(guān)聯(lián)夫偶,不要超過3個表join;
  2. 熱點(diǎn)數(shù)據(jù)盡量使用Redis觉增;(比如基礎(chǔ)資料)
  3. 盡量不用子查詢兵拢,不用Exist,不在條件列上使用函數(shù)抑片;
Big Batch

大批量的查詢輸出很容易將內(nèi)存打爆卵佛,報表或者打印要分批處理。

圖中涉及內(nèi)容鏈接:
Java的常用設(shè)計(jì)模式介紹
Hutool工具類整理官網(wǎng)

持續(xù)完善中敞斋。。疾牲。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末植捎,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子阳柔,更是在濱河造成了極大的恐慌焰枢,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異济锄,居然都是意外死亡暑椰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進(jìn)店門荐绝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來一汽,“玉大人,你說我怎么就攤上這事低滩≌偌校” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵恕沫,是天一觀的道長监憎。 經(jīng)常有香客問我,道長婶溯,這世上最難降的妖魔是什么鲸阔? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮迄委,結(jié)果婚禮上褐筛,老公的妹妹穿的比我還像新娘。我一直安慰自己跑筝,他們只是感情好死讹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著曲梗,像睡著了一般赞警。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上虏两,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天愧旦,我揣著相機(jī)與錄音,去河邊找鬼定罢。 笑死笤虫,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的祖凫。 我是一名探鬼主播琼蚯,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼惠况!你這毒婦竟也來了遭庶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤稠屠,失蹤者是張志新(化名)和其女友劉穎峦睡,沒想到半個月后翎苫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡榨了,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年煎谍,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片龙屉。...
    茶點(diǎn)故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡呐粘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出叔扼,到底是詐尸還是另有隱情事哭,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布瓜富,位于F島的核電站鳍咱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏与柑。R本人自食惡果不足惜谤辜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望价捧。 院中可真熱鬧丑念,春花似錦、人聲如沸结蟋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嵌屎。三九已至推正,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宝惰,已是汗流浹背植榕。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尼夺,地道東北人尊残。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像淤堵,于是被迫代替她去往敵國和親寝衫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評論 2 354

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

  • 代碼走查和代碼審查是白盒測試方法中的2種拐邪。 代碼走查: 從參加人員來說竞端,應(yīng)該是項(xiàng)目的整體參與者,如果項(xiàng)目太大庙睡,整體...
    許小小晴閱讀 10,179評論 1 3
  • 近幾周一直在加班事富,主要的工作內(nèi)容就是修改已離職人員代碼中的bug。 每天白天都有想罵街和砸電腦的沖動乘陪,然而看著一個...
    薛豐收閱讀 934評論 2 4
  • 尋根究底啡邑,QA參與代碼走查能做什么贱勃? 對多時區(qū)的場景一直不是很了解,前幾天跟波總梳理過一次谤逼,當(dāng)小伙伴們遇到問題贵扰,再...
    玉露君閱讀 857評論 0 5
  • 老外的代碼走查 有一篇關(guān)于代碼走查的漫畫,一屋子程序員在一起做代碼走查流部,在屋子外面的人數(shù)一數(shù) WTF 出現(xiàn)的頻率戚绕,...
    楚秀才閱讀 1,967評論 0 1
  • 昨天公司進(jìn)行了團(tuán)隊(duì)評比,其中有一項(xiàng)就是代碼走查枝冀。目前有兩種方式舞丛,一種是通過會議進(jìn)行抽查,一次性多人參加果漾;另一種是通...
    大女人zz閱讀 1,024評論 0 0