這週在公司一直給同事做codereview,感覺還是比較痛苦的,因為一些機制並不是很人性化,至少說,流程上有一些不成熟的環節。和大家一起分享,希望有經驗的朋友給我一下批評建議。
方案1:review meeting,即online review。
基本不可行。很大程度上依賴於主持者的素質,而且如果主持者不積極,就會流於形式。此外時間成本過高,為reviewer+owner的時間總和。倒是可以將其改造為team內部新技術新觀點的交流meeting,完全頭腦風暴式的那種。
方案2:offline review
我特別想說的就是這種。包括重構、**邏輯、**規範。
對於變更的**,owner應該提供乙份changelist,基於需求或者功能點,列舉出增刪改動了那些類和方法以及關鍵變數,這就迫使owner首先review一下自己的**,從而首先自身發現一些問題。對於**重構,更需要這份清單,甚至是乙個變更前後的類之間的關係圖(當然可以從之前的lld中複製過來)。額外的乙個好處就是,重構會把很多方法原封不動的從乙個類遷移到另乙個輔助類,那麼,reviewer就不用去care這些**,而只是關心整體的結構,從而對症下藥,對架構而不是**,提出新的見解。
code-review並不應該侷限於紙面上,僅僅依賴於乙個db是不夠的。一定要進行face to face的溝通或者by phone。由reviewer來講解自己的心得,可以不受owner的主觀意向影響,從其他角度來思考這個問題,還有就是迅速掌握**,可以在owner離開的情況下迅速接手這段code;由owner來講解,可以在介紹過程中,及時發現一些無法自圓其說的地方,然後加以修正。因此code-review從準備到完成的時間,應該大致為coding的50%左右。
最後,非常不贊同連錯別字都寫進code-review報告的行為。一方面要肯定reviewer的勤懇,但是,另一方面,這些與code無關的suggestion,會轉移我們的視線。我們究竟要關注什麼?是**質量,是架構設計,而不是單詞拼寫錯誤。過多此類的suggestion,會把真正的問題掩藏起來,即使有critical等級的區別,也無濟於事。一種極端的解決方式是禁止提這樣的suggestion,比較緩和的方式是私下交流這些小錯誤。
額外需要指出的是,對**規範的審核,盡量不要依賴人力,而是通過先進的工具來處理。人,總是要做一些機器做不了的事情,比如說重構與演算法的review。這樣,我們就可以有更多的時間focus在這些高層次的地方了。
補充:版本變更的**比較(我們公司使用的是clearcase)
如果類中原先有兩個方法a和b,a在b的前面。版本變更後將a方法挪到了b方法的後面,那麼clearcase會只認為b方法是不變的,而認為新版本在b方法前刪除了a方法,而在b方法後又新增了這個a方法——這就由clearcase的逐行比較演算法導致的,它畢竟只是乙個檔案控制工具,而不是for code file的;但是對於人而言,其實是沒有改變的。這就對code-review新增了困擾,如果**檔案2萬行,將乙個方法從頭位置挪到了尾部,這無疑就給reviewer造成了麻煩。
解決方案:如果clearcase比較不同版本的**檔案的演算法,能夠細化為先list出乙個類所有的成員(使用反射),按字母順序排列,那麼比對兩個版本的類檔案時,就可以按照成員的順訊,先比較成員是否有所增刪改變,再深入到方法屬性中,用clearcase原先的演算法,逐行比較**變更。
此外,還要注意巢狀類,因此要使用迭代來實現以上新演算法。還有就是partial分散類的問題,這應該在**規範中,禁止使用這種類的實現(自動生成的winform窗體除外)。
(五)activiti開發的幾點思路
前幾篇文章都是講的 activiti 的原理 用法。這些都能在 activiti 的手冊中查到,本文就說說如何將 activiti 和專案進行整合並使用,這些經驗都是自己在實際使用 activiti 中總結出的,希望能對大家有幫助。定義了業務狀態碼,就可以通過業務狀態碼來判斷流程走到了何種狀態。只讓...
分享幾點寫原創文章的思路
原創文章,特別是優質的原創文章對於乙個 的重要性就不再綴述了,大家都知道。只是大家都感覺到困難的是原創文章從 來,怎麼寫?今天筆者總結了幾個小竅門,和大家分享一下。竅門一,通過論壇 現在很多垂直行業都有其大大小小的專業論壇,收集幾個人氣旺的,經常上去看看們在討論什麼,看看們在求助什麼,你將們論壇的問...
創業建站選擇 space網域名稱的幾點思路
創造力推動創新。這一切都在於豐富想象力並將您的作品和想法分享到乙個獨特的空間,並取得成功。space網域名稱字尾讓您在擁擠的全球資訊網中擁有乙個獨特的空間,公開表達您的創造性天賦。無論是您的創業公司,您的藝術創作,您的寫作,您的舞蹈工作室,甚至是一家外太空公司或部落格,space都是您的最佳網域名稱...