剛才專注看了下zwchen的部落格,讀到code reivew這一篇,覺得自己也了說話的衝動。
我們team實施code reivew近5年,到今天,我們的結論是:code review是我們專案成功的最有力的**。下面我先談下我理解並實施的code review.
1.code review的層次。
最基礎的,也是所有人都會想到到的,就是編碼規範,類,方法命名什麼的,還有**格式...這些是程式設計師的基本功底,預設選項;多年前領導要我搞個編碼規範,我說大家都熟知的規範就已經很好了啊;當然公司內部也需要這方面的規範,比如專案如何命名,包如何命名等這些。
更高一層次的,也是說的比較少的,是**的質量。前面能保證**寫的好看,大家看了都還順眼,但並不能保證**的可工作性,合理性,健壯性,可維護性。我們需要可以解決問題的**;我們需要最合理(最是相對的)的**;我們不希望破壞現有的架構搞特殊處理,如果架構本身不適應,那就可控制的重構;我們不希望有個工作很好的功能被破壞。
2.code review的好處
第一,最少有兩個人對同一段**深刻理解,並且認同。如果不能做到敏捷要求的「結對程式設計」的味道,我們就打個折執行吧。這一點從公司正常運營上,也是有好處的。
第二,開發人員可以放心的把自己的創造性發揮出來,因為他知道他有個堅強的後盾,絕不會等到qa發現不可饒恕的錯誤,然後經理過來罵你一頓。
第三,開發人員都會盡全力寫最好的**;軟體開發人員都是要"face"的,不想當時就被別人找到缺陷,尤其是你身邊的同事。再也不會只顧今天,不管明天會怎樣;對軟體的可維護性更加盡心。
第四,極大的提高軟體質量,以及可維護性。當然這要求review人員的責任心,以及專業精神。如果是維護性專案,經驗也是相當重要的。
3.code review的重要性
至此,其重要性以已經不言而喻了。個人認為某種程度上其重要性以及你改超過unit test.
4.code review不好實施的原因
code review如此重要,但是據我接觸的人跟公司來看,真正認真執行的並不多。其原因無非:
第一階段,按制定的流程,開發人員把修改的**用郵件發給review者,並說明改了什麼,對系統那些功能有影響。然後負責review的人copy到eclipse,對比cvs, 看**的改動是否合理。然後再郵件通知合格,或不合格,並說明原因(口頭或書面)。
第二階段,開發人員都覺得這樣太繁瑣,費事費力;於是我們開發了個eclipse外掛程式,幫助開發人員對自動生成**改動細節的郵件,並把改動的**自動放到指定的公用資料夾中。如此一來開發人員生成乙個code review的請求,就是分分鐘的事情了(右鍵,寫點什麼,完成)就好了。
為什麼要堅持code review
code review在我入職時,可以說是嚴格到令人髮指,不通過無法提交,而且經常占用整個開發時間的大約40 我當時的一段 可以說經常被打回來5,6次。有時最終提交的 都直接重構了當初的第一版。我也曾經因為code review,好幾次差點耽誤了開發進度。而現在我經常作為審核人員去review其他同...
為什麼要選擇ISP 為什麼要選擇AHD
在影象傳輸中,我們為什麼選擇nextchip?為什麼要選擇isp?為什麼要選擇ahd?為什麼選擇北京冠宇銘通?這個問題我倒著回答各位 一 北京冠宇銘通科技是nextchip目前為止唯一一家正式官方授權 車載產品廠家之一 二 ahd和其他幾種傳輸方式相比,擁有自己的專利,其他幾家有專利的沒有幾個,如果...
為什麼要分詞
這裡不討論這個問題,我要說的為什麼要分詞?分詞是什麼!有人問 分詞有什麼作用啊?某人答 搜尋引擎要用到中文分詞,所以非常重要 這完全是廢話,說了等於沒說。搜尋引擎又為什麼要分詞呢?其實一般意思上指的分詞是比較狹隘的意思,指中文的詞是怎樣劃分的。因為中文沒有空格,所以要理解一篇文 章,你首先當然要切分...