關(guān)于Code Review的一些思考總結(jié)

Code Review

目的

  • 提高代碼質(zhì)量

  • 提前發(fā)現(xiàn)bug

  • 統(tǒng)一代碼規(guī)范

  • 提高團(tuán)隊(duì)成員代碼技能

前期找問(wèn)題(代碼規(guī)范呕童、潛在缺陷、BUG,代碼設(shè)計(jì)等等)哈街,后期演變成開(kāi)發(fā)者技術(shù)交流和員工成長(zhǎng)

如何開(kāi)展

  • 代碼規(guī)范:明確Coding規(guī)則

  • 檢視清單:結(jié)合業(yè)務(wù)特點(diǎn),check重點(diǎn)

  • 總結(jié)優(yōu)化:透明問(wèn)題如庭,持續(xù)優(yōu)化

  • 激勵(lì)措施:激發(fā)主觀能動(dòng)性

開(kāi)展方式

  • 強(qiáng)制&非強(qiáng)制

  • 線上交流(小組review)&線下會(huì)議(團(tuán)隊(duì)review)

  • 小片段&大模塊

  • 發(fā)布前&發(fā)布后

  • 高頻率&低頻率

阻力因素

  • 領(lǐng)導(dǎo)或者團(tuán)隊(duì)骨干不認(rèn)同

  • 為了疲于應(yīng)付

  • 需求多叹卷,沒(méi)時(shí)間做為偷懶借口

組織類型

  1. 小組內(nèi)review,通常是模塊負(fù)責(zé)人或者項(xiàng)目負(fù)責(zé)人review坪它,頻率比較高骤竹,一天至少一次

  2. 團(tuán)隊(duì)review,通常是整個(gè)團(tuán)隊(duì)review代碼往毡,團(tuán)隊(duì)負(fù)責(zé)人牽頭蒙揣,頻率可以低一點(diǎn),鑒于公司情況一周至少1次吧

review內(nèi)容

統(tǒng)一團(tuán)隊(duì)代碼風(fēng)格和編程規(guī)范

靜態(tài)代碼檢查工具

  1. Java類:Checkstyle开瞭、FindBugs懒震、PMD、Infer等

  2. JavaScript類:JSLint嗤详、ESLint等

  3. Object-C類:OCLint个扰、Clang Static Analyzer、Infer等

  4. C#類:StyleCode等

……

更多可以參考的一些編碼規(guī)范(Kristories/awesome-guidelines)

發(fā)現(xiàn)『bad smell』的代碼以及bug

相關(guān)書(shū)籍:《重構(gòu)-改善既有代碼的設(shè)計(jì)》《代碼整潔之道》

團(tuán)隊(duì)成員好的經(jīng)驗(yàn)

  • 什么寫(xiě)法可能導(dǎo)致性能低下葱色?

  • 哪個(gè)接口要慎用递宅?

  • 哪些設(shè)計(jì)方式需要規(guī)避?

  • 什么習(xí)慣容易引發(fā)內(nèi)存泄漏苍狰?

……

開(kāi)發(fā)者由于當(dāng)初時(shí)間緊迫而覺(jué)得設(shè)計(jì)不合理的功能

  • 功能不完善

  • 設(shè)計(jì)有欠缺

  • 代碼有更好實(shí)現(xiàn)方案

  • 重視項(xiàng)目代碼的可讀性

總之办龄,代碼是否符合團(tuán)隊(duì)約定的代碼風(fēng)格規(guī)范、代碼是否切合它所實(shí)現(xiàn)的業(yè)務(wù)淋昭、代碼是否安全俐填、代碼性能、對(duì)后續(xù)開(kāi)發(fā)者是否友好翔忽,即是否容易維護(hù)等

注意事項(xiàng)

  • GitLab可以設(shè)置master和develop分支保護(hù)英融,開(kāi)發(fā)者不能向這兩個(gè)分支push代碼,只能通過(guò)PR/MR形式歇式。

  • 可以通過(guò)設(shè)置git pre-commit hook來(lái)check驶悟,從而使不符合規(guī)范的代碼禁止提交倉(cāng)庫(kù)。

  • 配合CI檢查贬丛,作為build的第一步撩银。

  • 用戶角色有:所有者/主程/開(kāi)發(fā)者/報(bào)告者/訪客,其中只有所有者和主程才有review代碼和合并代碼權(quán)限豺憔。

  • 注意小組至少有兩個(gè)人有權(quán)限r(nóng)eview并合并代碼额获,避免一個(gè)人請(qǐng)假或者不在够庙,導(dǎo)致代碼合不上去。

  • 主程一定要注意抄邀,避免過(guò)多模塊工作堆積在自己身上耘眨,一定要學(xué)會(huì)合理分配任務(wù),因?yàn)槟氵€需要有精力去review代碼境肾,這也是一部分額外任務(wù)剔难。

  • 提交的 feature 分支全部走 gitlab 的 MR ,develop分支不允許提交奥喻,只用來(lái)合并偶宫,并且只合并那些經(jīng)過(guò)review過(guò)的代碼,master分支不允許提交环鲤,也只用來(lái)合并纯趋,并且只合并來(lái)自develop分支的代碼。

  • 不一定職稱越高冷离,就更有可能比別人review代碼吵冒,code review知識(shí)共享更受重視,通過(guò)review發(fā)現(xiàn)bug是有的西剥,但不是最終目的痹栖,增進(jìn)團(tuán)隊(duì)共識(shí),保護(hù)團(tuán)隊(duì)一致性其實(shí)更重要瞭空。

  • 盡量避免開(kāi)發(fā)經(jīng)驗(yàn)不足的開(kāi)發(fā)者或者剛進(jìn)公司對(duì)業(yè)務(wù)不熟悉的人員(哪怕高級(jí)工程師)review 代碼揪阿。

  • 如果可以盡可能寫(xiě)單元測(cè)試,不一定cover全面匙铡,如果時(shí)間緊迫可以只對(duì)關(guān)鍵模塊做图甜。

  • 提交PR/MR碍粥,記得在IM上通知相關(guān)人員review鳖眼,比如項(xiàng)目負(fù)責(zé)人或者模塊負(fù)責(zé)人。

  • 控制團(tuán)隊(duì)review的時(shí)間嚼摩,半個(gè)小時(shí)到1個(gè)小時(shí)钦讳,最好不要超過(guò)1個(gè)小時(shí),30-40分鐘為宜枕面,項(xiàng)目負(fù)責(zé)人具體把握愿卒。

  • 根據(jù)公司情況團(tuán)隊(duì)review一周在至少一次比較合適。

  • review可能需要多次才被允許合入代碼潮秘,這也就意味著琼开,可能你的代碼需要給多次修改才能改好。

  • 避免代碼堆積枕荞,造成一次review大量代碼柜候,一方面急于review搞动,這樣容易放水,同時(shí)也浪費(fèi)時(shí)間渣刷,造成效果不理想鹦肿。

  • 建議由1人做好記錄,把每次review的改進(jìn)點(diǎn)以清單形式匯總列清楚發(fā)給所有參會(huì)人員辅柴。

總結(jié)

由于工期緊箩溃、需求變更快,如果不想清楚為什么要做 Code Review 碌嘀,遇到障礙會(huì)非常容易妥協(xié)涣旨,慢慢 Code Review 就會(huì)走樣,最終流于形式股冗。反之拔疚,在我們遇到障礙,review 代碼不順利時(shí)就會(huì)以積極的心態(tài)來(lái)解決問(wèn)題怎囚。Code Review會(huì)影響開(kāi)發(fā)效率秦陋,事實(shí)上追求高質(zhì)量的代碼本身就降低了局部的開(kāi)發(fā)效率,但是放眼長(zhǎng)遠(yuǎn)导俘,這樣寫(xiě)出來(lái)的代碼更加健壯峦耘,不會(huì)或很少出現(xiàn)“詭異”的bug,降低了后期維護(hù)的成本旅薄。

所以Code Review本身沒(méi)有問(wèn)題辅髓,其實(shí)是人容易出問(wèn)題。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末少梁,一起剝皮案震驚了整個(gè)濱河市洛口,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凯沪,老刑警劉巖第焰,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異妨马,居然都是意外死亡挺举,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)烘跺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)湘纵,“玉大人,你說(shuō)我怎么就攤上這事滤淳∥嗯纾” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)铺敌。 經(jīng)常有香客問(wèn)我绊困,道長(zhǎng),這世上最難降的妖魔是什么适刀? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任秤朗,我火速辦了婚禮,結(jié)果婚禮上笔喉,老公的妹妹穿的比我還像新娘取视。我一直安慰自己,他們只是感情好常挚,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布作谭。 她就那樣靜靜地躺著,像睡著了一般奄毡。 火紅的嫁衣襯著肌膚如雪折欠。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天吼过,我揣著相機(jī)與錄音锐秦,去河邊找鬼。 笑死盗忱,一個(gè)胖子當(dāng)著我的面吹牛酱床,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播趟佃,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼扇谣,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了闲昭?” 一聲冷哼從身側(cè)響起罐寨,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎序矩,沒(méi)想到半個(gè)月后鸯绿,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡贮泞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年楞慈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了幔烛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片啃擦。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖饿悬,靈堂內(nèi)的尸體忽然破棺而出令蛉,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布珠叔,位于F島的核電站蝎宇,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏祷安。R本人自食惡果不足惜姥芥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望汇鞭。 院中可真熱鬧凉唐,春花似錦、人聲如沸霍骄。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)读整。三九已至簿训,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間米间,已是汗流浹背强品。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留屈糊,地道東北人择懂。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像另玖,于是被迫代替她去往敵國(guó)和親困曙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

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

  • 轉(zhuǎn)自原文地址 前幾天看了《Code Review 程序員的寄望與哀傷》谦去,想到我們團(tuán)隊(duì)開(kāi)展Code Review也有...
    bruce_wu閱讀 2,178評(píng)論 1 13
  • Git 規(guī)范 所有使用了本規(guī)范的項(xiàng)目慷丽,必須嚴(yán)格規(guī)范操作,否則不予以合并代碼鳄哭、提測(cè)要糊、打包上線等后續(xù)操作。 基本要求 ...
    zgsddzwj閱讀 13,621評(píng)論 1 14
  • code review 的目的是提高代碼質(zhì)量妆丘,減少開(kāi)發(fā)bug锄俄,俗話說(shuō),三人行必有我?guī)熒准穑娙耸安窕鹧娓摺?gitla...
    劉凱_7013閱讀 44,617評(píng)論 4 26
  • 一點(diǎn)點(diǎn)回憶 一絲絲情意 還不曾好好擁抱你 便已你我相離 就讓我從今天開(kāi)始 轟轟烈烈地愛(ài)你一次 不要在意時(shí)間割走的過(guò)...
    楊寒火子閱讀 310評(píng)論 1 1
  • 文/樊曉鑫 故鄉(xiāng) 之所以稱為故鄉(xiāng) 是因?yàn)槟鞘俏覀兊某錾淼?那曾經(jīng)美好的童年和少年 大多數(shù)是在那片土地上度過(guò)的 故鄉(xiāng)...
    梵鑫閱讀 265評(píng)論 0 2