从零开始Code Review
https://blog.csdn.net/uxyheaven/article/details/49773619
最初來到這個新組建的團隊是木有code review的. 頭說, 這個月你來搞吧.
當我第一次知道必須得搞review的時候, 其實我是拒絕的! 因為我覺得…呀…你不能叫我馬上搞立馬搞, 第一, 我要試一下, 我又不想說…團隊之前就沒有這個習(xí)慣. 我搞了以后, 那個耽誤每天的工作時間啊. 結(jié)果同事一定會罵我, 給他們增加額外的工作量. 我說先讓我嘗試嘗試. 現(xiàn)在呢…每天都在review!每天都在review呢…我還推廣到了其他團隊!來!來!來!大家試試看!
覺得困難, 開展不起來, 想拒絕的原因有很多:
- 團隊成員寫完需求就不管了, 沒有code review意識
- 技術(shù)氛圍不強
- 水平參差不齊
- 沒有合適的工具
- …
但是總的來說就是一條, 木有code review. 如果已經(jīng)有了, 無論是真的在搞, 還是形式主義, 主持一下都是不難的.
從零到一, 從無到有總是困難的, 咱開始了若干次嘗試之路:
第一次嘗試
最初的版本是其他團隊的寫的, 到我們團隊接手的時候, 啥都木有. 什么逗號等號左右不空格, 類名首字母小寫, 方法名首字母大寫; 依賴亂七八糟; 在view里寫業(yè)務(wù), 在view里發(fā)網(wǎng)絡(luò)請求. 看到這樣的代碼我當時心里是崩潰的.
我先嘗試一個人幫整個團隊review. 零散看了幾天, 問題代碼貼了幾十張ppt, 槽點太多, 看起來很感人. 后來自己放棄了.
結(jié)論
Code Review 一個人看所有人的代碼是不可取的.
第二次嘗試
結(jié)對編程可以看做是一種敏捷化的Code Review. 直接結(jié)對會被頭劈死. 于是我想著采用新的結(jié)對編程方式.
兩位程序員新成結(jié)對小組, 每人一臺電腦, 坐在臨近的工位上, 兩人合作完成一組功能(可以是兩個或多個獨立的模塊)的設(shè)計, 代碼實現(xiàn). 但對已某一個模塊來說設(shè)計和代碼是分開的, 一個人負責(zé)設(shè)計, 另一個人負責(zé)寫代碼, 對于其他模塊則反之.
當我在團隊里尋找可以結(jié)對的伙伴的時候, 發(fā)現(xiàn)木有可以設(shè)計模塊, 項目進度又差不多, 可以結(jié)對的小伙伴.
結(jié)論
Code Review的模式需要接地氣.
第三次嘗試
第三次嘗試, 我想用一個游戲的方法去開展review
- 每次的review主持輪流當, 由大伙推舉當前找得bug最少的同學(xué)來主持.
- 每輪開始的時候,先貼出代碼來, 由下面的同學(xué)說問題.(大伙這個時候關(guān)注下哪位同學(xué)次次都木有發(fā)現(xiàn)問題)
- 最后由主持的同學(xué)將所有的問題列出來.
- 進入下一輪
- 如果經(jīng)常是下面的同學(xué)說的比主持人多,主持人第二天繼續(xù).
- 主持的同學(xué),每日最少準備6張問題ppt斷.
- 指出的問題由主持人來指定一個修改的同學(xué)修改.
- 第二天的主持人負責(zé)把當天得bug錄入jira, 并且負責(zé)跟蹤這些修復(fù).
太理想化了, 根本開展不起來.
結(jié)論
不要自己覺得好就是好, Code Review是團隊的事情, 方案定了得拿出去溜溜.
第四次嘗試
無奈之下, 我去請教我的頭, 如何去開這個頭. 頭就給了兩個字: 強壓.
于是小伙伴們便在我的淫威之下開展了第一次的code review. 我用的是之前第一次整理出的ppt. 效果竟然好的意外. 小伙伴們互相吐槽被我指出來的渣渣代碼, 氣氛很是歡樂.
不過關(guān)鍵問題還是沒有一個統(tǒng)一的標準去改. 于是咱緊接著就安排了一場代碼規(guī)范的分享. 再接下來的一次review, 大貨吐槽的點就相對集中了.
結(jié)論
Code Review初期需要有標準. 讓小伙伴們知道如何去review.
第五次嘗試
由于之前的氛圍很好, 有小伙伴A提議拿出他負責(zé)的模塊來集體review. 有主動的, 當然不能拒絕. 后面幾天安排的都是review他的模塊了. 順帶還做了一次他的模塊的設(shè)計分享.
在有天的review中, 有個小伙伴B表示這樣現(xiàn)場重構(gòu)不是他擅長的. 我們: 那你擅長啥? 小伙伴B: 我擅長xxx. 我: 那下周你來給大貨分享下吧. 小伙伴B: 好, 我準備一下.
結(jié)果小伙伴B深藏不漏, 連續(xù)分享了一整個系列.
結(jié)論
聞道有先后, 術(shù)業(yè)有專攻, 不要低估你的小伙伴們. 給他們展示自己的機會.
第六次嘗試
我被掛的任務(wù)是code review, 所以偶爾還是會看看小伙伴們代碼的. 有天突然發(fā)現(xiàn)有個小伙伴C, 在重構(gòu)優(yōu)化代碼了. 咱順勢和他說了一些編程方面的思想和技巧, 告訴他還可以這么重構(gòu), 用查表發(fā)代替條件語句, 用多態(tài)代替提條件語句, 用runtime生成方法名, 用runtime 執(zhí)行方法. 于是他也出來一個技術(shù)分享. 可惜的是關(guān)于編程思想的分享討論起來就木有那么激烈了, 這個只能慢慢來了. 不過當咱吃完飯快8點回到公司的時候, 發(fā)現(xiàn)有兩個小伙伴DE在寫demo, 在討論之前C的技術(shù)分享.
結(jié)論
不能急于求成, 一股腦的灌; 編程的思想需要慢慢悟, .
第七次嘗試
有次review, 我有事提前走了. 但是呢, 本是半個小時分享大伙覺得還不盡興, 又延長了二十分鐘. 之前有幾場分享, 也都不是我主持的. 后續(xù)的review我將嘗試進一步淡化我的主持. 讓我們的review可以自組織的進行下去.
結(jié)論
Code Review需要達到理想的狀態(tài) - 不需要我也能自如地運轉(zhuǎn), 不然最后就會輪為政治任務(wù).
第八次嘗試
到了第八次嘗試,基本已經(jīng)定型. 感謝公司提供gitlab代碼托管平臺. 我們再第一時間將團隊多個項目遷移到了新平臺上去, 然后開發(fā)流程改成了gitflow, 當一個功能開發(fā)完成后, 會發(fā)起Merge Request, 大伙在這個時候便可以開始code review了,互相吐槽的言語和片段也都被記錄了下來, 當收集齊了兩個贊的代碼, 才允許合并進來. 整個過程感覺良好.
結(jié)論
Code Review需要有工具, 需要有不reivew不讓合并的規(guī)矩.
建議
如何做出從零開始code review呢, 我的建議是:
- tech leader 強壓所有人開始 code review, 這是最重要的一步
- 安排一次編碼規(guī)范的技術(shù)分享
- 前期經(jīng)常回顧, 這次的code review開展的怎樣, 有哪些地方可以改善
- 對于積極的同學(xué)表示鼓勵, 支持現(xiàn)場重構(gòu)代碼
- 每天不光可以review代碼, 也可以安排整場的技術(shù)分享
轉(zhuǎn)載于:https://www.cnblogs.com/davidwang456/articles/9443416.html
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的从零开始Code Review的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 干货|一文读懂中国7大支付体系(附27页
- 下一篇: neuroph轻量级神经网络框架