自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

從零開始 Code Review

移動開發(fā)
當(dāng)我第一次知道必須得搞review的時候, 其實我是拒絕的! 因為我覺得…呀…你不能叫我馬上搞立馬搞, 第一, 我要試一下, 我又不想說…團隊之前就沒有這個習(xí)慣. 我搞了以后, 那個耽誤每天的工作時間啊. 結(jié)果同事一定會罵我, 給他們增加額外的工作量. 我說先讓我嘗試嘗試. 現(xiàn)在呢…每天都在review!每天都在review呢…我還推廣到了其他團隊!來!來!來!大家試試看!

[[156391]]

這篇帖子不是通篇介紹Code Review的方法論, 而是前大段記錄了我們團隊怎么從沒有這個習(xí)慣到每天都進行review的過程, 后小段給出了我的一些建議. 希望能對諸位的團隊有所幫助.

最初來到這個新組建的團隊是木有code review的. 頭說, 這個月你來搞吧.

當(dāng)我***次知道必須得搞review的時候, 其實我是拒絕的! 因為我覺得…呀…你不能叫我馬上搞立馬搞, ***, 我要試一下, 我又不想說…團隊之前就沒有這個習(xí)慣. 我搞了以后, 那個耽誤每天的工作時間啊. 結(jié)果同事一定會罵我, 給他們增加額外的工作量. 我說先讓我嘗試嘗試. 現(xiàn)在呢…每天都在review!每天都在review呢…我還推廣到了其他團隊!來!來!來!大家試試看!

覺得困難, 開展不起來, 想拒絕的原因有很多:

團隊成員寫完需求就不管了, 沒有code review意識

技術(shù)氛圍不強

水平參差不齊

沒有合適的工具

但是總的來說就是一條, 木有code review. 如果已經(jīng)有了, 無論是真的在搞, 還是形式主義, 主持一下都是不難的.

從零到一, 從無到有總是困難的, 咱開始了若干次嘗試之路:

***次嘗試

最初的版本是其他團隊的寫的, 到我們團隊接手的時候, 啥都木有. 什么逗號等號左右不空格, 類名首字母小寫, 方法名首字母大寫; 依賴亂七八糟; 在view里寫業(yè)務(wù), 在view里發(fā)網(wǎng)絡(luò)請求. 看到這樣的代碼我當(dāng)時心里是崩潰的.

我先嘗試一個人幫整個團隊review. 零散看了幾天, 問題代碼貼了幾十張ppt, 槽點太多, 看起來很感人. 后來自己放棄了.

結(jié)論

Code Review 一個人扛N個人的代碼是不可取的.

第二次嘗試

結(jié)對編程可以看做是一種敏捷化的Code Review. 直接結(jié)對會被頭劈死. 于是我想著踩用新的結(jié)對編程方式.

兩位程序員新成結(jié)對小組, 每人一臺電腦, 坐在臨近的工位上, 兩人合作完成一組功能(可以是兩個或多個獨立的模塊)的設(shè)計, 代碼實現(xiàn). 但對已某一個模塊來說設(shè)計和代碼是分開的, 一個人負責(zé)設(shè)計, 另一個人負責(zé)寫代碼, 對于其他模塊則反之.

當(dāng)我在團隊里尋找可以結(jié)對的伙伴的時候, 發(fā)現(xiàn)木有可以設(shè)計模塊, 項目進度又差不多, 可以結(jié)對的小伙伴.

結(jié)論

Code Review需要接地氣.

第三次嘗試

第三次嘗試, 我想用一個游戲的方法去開展review

每次的review主持輪流當(dāng), 由大伙推舉當(dāng)前找得bug最少的同學(xué)來主持.

每輪開始的時候,先貼出代碼來, 由下面的同學(xué)說問題.(大伙這個時候關(guān)注下哪位同學(xué)次次都木有發(fā)現(xiàn)問題)

***由主持的同學(xué)將所有的問題列出來.

進入下一輪

如果經(jīng)常是下面的同學(xué)說的比主持人多,主持人第二天繼續(xù).

主持的同學(xué),每日最少準(zhǔn)備6張問題ppt斷.

指出的問題由主持人來指定一個修改的同學(xué)修改.

第二天的主持人負責(zé)把當(dāng)天得bug錄入jira, 并且負責(zé)跟蹤這些修復(fù).

太理想化了, 根本開展不起來.

結(jié)論

不要自己覺得好就是好, Code Review是團隊的事情, 方案定了得拿出去溜溜.

第四次嘗試

無奈之下, 我去請教我的頭, 如何去開這個頭. 頭就給了兩個字: 強壓.

于是小伙伴們便在我的淫威之下開展了***次的code review. 我用的是之前***次整理出的ppt. 效果竟然好的意外. 小伙伴們互相吐槽被我指出來的渣渣代碼, 氣氛很是歡樂.

不過關(guān)鍵問題還是沒有一個統(tǒng)一的標(biāo)準(zhǔn)去改. 于是咱緊接著就安排了一場代碼規(guī)范的分享. 再接下來的一次review, 大貨吐槽的點就相對集中了.

結(jié)論

Code Review初期需要有標(biāo)準(zhǔn). 讓小伙伴們?nèi)绾稳eview.

第五次嘗試

由于之前的氛圍很好, 有小伙伴A提議拿出他負責(zé)的模塊來集體review. 有主動的, 當(dāng)然不能拒絕. 后面幾天安排的都是review他的模塊了. 順帶還做了一次他的模塊的設(shè)計分享.

在有天的review中, 有個小伙伴B表示這樣現(xiàn)場重構(gòu)不是他擅長的. 我們: 那你擅長啥? 小伙伴B: 我擅長xxx. 我: 那下周你來給大貨分享下吧. 小伙伴B: 好, 我準(zhǔn)備一下.

結(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)于編程思想的分享討論起來就木有那么激烈了, 這個只能慢慢來了. 不過當(dāng)咱吃完飯快8點回到公司的時候, 發(fā)現(xiàn)有兩個小伙伴DE在寫demo, 在討論之前C的技術(shù)分享.

結(jié)論

編程的思想需要慢慢悟, 不能一股腦的灌.

第七次嘗試

有次review, 我有事提前走了. 但是呢, 本是半個小時分享大伙覺得還不盡興, 又延長了二十分鐘. 之前有幾場分享, 也都不是我主持的. 后續(xù)的review我將嘗試進一步淡化我的主持. 讓我們的review可以自組織的進行下去.

結(jié)論

Code Review需要達到理想的狀態(tài) - 不需要我也能自如地運轉(zhuǎn), 不然***就會輪為政治任務(wù).

后記

隨著團隊的人數(shù)增多, 集體review這種方式也會做出調(diào)整, 我們會引入一些code review的方法論和工具. 萬事開頭難, 既然已經(jīng)開了這個頭, 我相信后續(xù)的調(diào)整也不是什么難事.

建議

如何做出從零開始code review呢, 我的建議是:

tech leader 強壓所有人開始 code review, 這是最重要的一步

安排一次編碼規(guī)范的技術(shù)分享

前期經(jīng)?;仡? 這次的code review開展的怎樣, 有哪些地方可以改善

對于積極的同學(xué)表示鼓勵, 支持現(xiàn)場重構(gòu)代碼

每天不光可以review代碼, 也可以安排整場的技術(shù)分享

責(zé)任編輯:chenqingxiang 來源: 曉月 的博客
相關(guān)推薦

2020-07-02 15:32:23

Kubernetes容器架構(gòu)

2024-12-06 17:02:26

2018-04-18 07:01:59

Docker容器虛擬機

2019-01-18 12:39:45

云計算PaaS公有云

2024-05-15 14:29:45

2010-05-26 17:35:08

配置Xcode SVN

2018-09-14 17:16:22

云計算軟件計算機網(wǎng)絡(luò)

2024-11-28 10:35:47

2015-10-15 14:16:24

2011-04-06 15:55:50

開發(fā)webOS程序webOS

2024-04-10 07:48:41

搜索引擎場景

2011-09-05 14:17:54

Sencha ToucMVC

2019-09-23 19:30:27

reduxreact.js前端

2024-07-31 08:14:17

2023-03-21 07:35:43

2020-02-11 16:49:24

React前端代碼

2014-07-22 13:09:21

android

2024-03-01 19:53:37

PyBuilderPython開發(fā)

2022-02-16 22:57:57

Mitmproxy抓包工具

2017-02-10 09:30:33

數(shù)據(jù)化運營流量
點贊
收藏

51CTO技術(shù)棧公眾號