code review是專案過程中一項非常重要的工作,可以有效檢查出**層面的問題,而這些問題常常是qa難以發現的。但在現實工作中code review常常因為無法量化而流於形式,無法形成有效地閉環,很多時候只是在pm提醒下互相看兩眼,或是組織大家開code review會議,在會議上大夥一起對著投影做集體review,效果可想而知不會太好。
解決以上的問題關鍵在於形成乙個機制並且借助有效的工具去實施,這一點上可以借鑑qa的bug系統,對每乙個有問題的點建立問題發現、問題分配和問題解決等生命週期,並且記錄在案,使每個code reviewer擔當起類似qa的職責。
code review機制
code review機制和流程可見下圖所示:
整個流程下來關鍵在於所有code review的工作能把專案所有人納入進來,而不只是leader或專案核心成員的事情,另外要把每個issue形成閉環,讓發現的問題正在得到解決
具體實施方法
實施的方法是根據所定的機制和流程而來,對於上面的流程通過乙個excel也能完成,但不適合整個team並行來做,jupiter就是乙個為了讓整個team來做review的工具,它是乙個eclipse plugin,因此能很好和需要review的code結合起來,非常方便。下面講一下通過jupiter來完成以上流程的具體步驟(安裝就不多說了,eclipse裡面直接更新即可):
1)coder把需review的code提交給reviewer
某個模組的開發者完成**後需要把涉及到的**提交給reviewer
進入專案的properties面板,選擇review子面板:
新建乙個review單元,按照新建流程一路下去即可,關鍵在reviewer setting面板裡指定誰來review你的**,如下例所示:
在author setting面板裡指定誰對這個**負責,一般都是這個**的coder,如下例所示:
以上的指定就是要弄明白review過程中的各個角色,其他選項就根據需要指定即可,使用預設也行。
新建乙個review單元後得把產生的.review檔案commit上去,因為所有的流程和動作都是基於這個檔案,大家的合作就是基於這個檔案的版本管理,所以只有commit這個檔案才算是提交了乙個review單元,reviewer才能感知到這個review項
2)reviewer review提交給自己的code並註明意見
reviewer更新所有.review檔案後,進入jupiter的individual階段:
在reviewer id裡選擇代表自己的那一項,完了後即可開始具體的**review,在review面板裡能方便地找到需要review的檔案:
在具體的**行上可以加上review注釋:
儲存後在**就會有個明顯的標示表示這裡需要修改:
完成所有review工作後commit .review檔案
3)leader根據工作量安排把issues分配給修改人
leader更新所有.review檔案後,進入jupiter的team階段:
對每個issue選擇分配給誰,預設是是分配給此**的coder
4)coder修復具體的issues
coder更新所有.review檔案後,進入jupiter的rework階段:
可以看到所有分配給自己的修復任務,修復好後,更改status為resolved
5)issues確認和關閉
reviewer或leader在jupiter的rework階段檢視每個issue的修復結果,確實修復好的更改status為closed,如果沒有修復好的找到coder進行交流,需要集體確認和討論的留到code review會議上
單點登入 基於code
前後端分離專案 const singlelogin async const gotoindex async code string 0 return 如果失敗去設定使用者錯誤資訊 setuserloginstate msg catch error setsubmitting false useeff...
在Code上建立了新的專案TEngine
最近想要總結一下最近學到的東西,打算搞乙個渲染引擎,正好看到csdn開了code服務,於是就來試試。這個渲染引擎基於c 和opengl,作業系統為windows,暫時沒有誇平台的打算。前幾天設計了一下檔案結構,並建立起了工程,今天把流程走通了一下,能夠渲染乙個空的opengl視窗。參考了一些別的引擎...
基於RDD建立DataFrame
spark sql支援兩種不同的方法用於轉換已存在的rdd成為dataset。第一種方法是使用反射去推斷乙個包含指定的物件型別的rdd的schema。在你的spark應用程式中當你已知schema時這個基於方法的反射可以讓你的 更簡潔。不過這種方法要求你在寫程式時已經知道rdd物件的結構資訊,因為需...