自己的程式自己寫! 但用 Code Review 程式碼檢閱功能可以叫別人寫嗎?

各位 Coder 們,

一個良好的開發品質之團隊,通常會請剛加入團隊或是新人在撰寫程式碼告一段落,邀請同事/老闆或是資深工程師幫你 Code review,以往作法可能是將程式碼印出 (浪費紙),或在會議室中用大布幕投影出來,或將你的開發電腦拿到同仁的位置看同一個螢幕。當然面對面的溝通是當下 review 效果最佳,但可搭配 VIsual Studio 2013 + TFS 中的 「程式碼檢閱」功能,邀請同事檢示你的 Code,並在程式碼區塊給意見,好處是能將這些回覆及修正的過程留下來,未來類似的程式碼問題,你能回顧這些 review 的過程幫助你的思路及理解,才不會日子久了就忘了,有助於整體團隊的經驗累積

本文簡介如何使用 Visual Studio 2013 中的「程式碼檢閱」功能,以Review一個測試程式為範例。自己的程式還是得自己寫,但有 Review 品質更好又能累積智慧!

--------------------------------------------------------------------------------------------------------------------

1.要求程式碼檢閱

Peter 對於 Bug 修正的結果感到滿意,但尚未簽入他的工作。 他的小組使用程式碼檢閱將整體程式碼品質提高並減少建立更多 Bug 的風險,因此 Peter 使用 Team Explorer 要求組員 Julia 和 Adam 進行程式碼檢閱。

Hh474795.collapse_all(zh-tw,VS.120).gif若要要求程式碼檢閱

My Work page - Request Review link. New Code Review page - Enter the name of a reviewer dropdown, Enter a description (optional) textbox, Submit Request button.

  1. 在 [Team Explorer] 的 [我的工作] 頁面上,選擇 [要求檢閱]。

    [新增程式碼檢閱] 頁面隨即出現。

  2. 檢閱者 指定一位或多位檢閱者。

  3. 程式碼檢閱 指定檢閱的名稱。

  4. 區域路徑 指定區域路徑。

  5. 註解 指定給檢閱者的註解。

  6. 選擇 [送出要求]。

檢閱者將會收到要求的電子郵件通知。

您也可以要求對暫止的工作、擱置集或變更集進行程式碼檢閱。 若要查看變更集的清單,請開啟 [原始檔控制總管] 並選擇 [記錄] 按鈕。

2. 接受或拒絕程式碼檢閱

 

Julia 會收到程式碼檢閱要求並接受要求。 她會檢閱程式碼,在文件和程式碼區塊層級撰寫一些註解,然後將程式碼檢閱送回給 Peter。 Adam 太忙碌而無法檢視程式碼,因此會拒絕要求。

Julia 在註解中指出測試錯誤。 允許的錯誤應該是指定的輸入值分數,而不是常數數量。 因此測試應該將錯誤乘以值。

 

 

             // We allow a rounding error of 1 in 1000000
            // as a fraction of the value:
            TestEqual(1, 1e-7, true); // Less than allowed error
            TestEqual(1, 1e-5, false); // More than allowed error
            TestEqual(1000, 1000*1e-7, true); // Less than allowed error
            TestEqual(1000, 1000*1e-5, false); // More than allowed error

提示提示

請注意,小組成員會使用測試做為討論的焦點。 如果測試正確且已足夠,程式碼也將如此。 與程式碼不同的是,每項測試都代表一個獨立的案例。 因此,測試通常比程式碼容易進行討論。

Hh474795.collapse_all(zh-tw,VS.120).gif若要執行程式碼檢閱

My Work page - code review item. Code Review page - Decline link, Comment, Decline button.Diff window. Code Review page - Accept link, Overall comment, code block comment

  1. 在 [Team Explorer] 的 [我的工作] 頁面上,移至 [我的程式碼檢閱與要求] 區段並開啟要求。

  2. 在 [程式碼檢閱] 頁面上,您可以:

    • 選擇 [接受] 或 [拒絕] 以通知作者您是否要執行檢閱。

    • 選擇 [加入檢閱者] 將其他檢閱者加入至程式碼檢閱要求。

    • 檢視針對此工作項目更新之每個檔案的變更。

    • 展開 [註解],與作者及其他檢閱者討論變更。

      • 選擇 [加入整體註解]

        -或-

        選取程式碼區塊,然後從捷徑功能表選擇 [加入註解]。

      • 選擇 [傳送註解],讓作者和其他檢閱者看得見您的貢獻。
    • 選擇 [傳送並完成] 完成您的檢閱,並指出程式碼是否需要進行更多處理。

3. 回應程式碼檢閱

 

Peter 收到來自 Julia 的程式碼檢閱並予以回應。

Hh474795.collapse_all(zh-tw,VS.120).gif若要回應程式碼檢閱

程式碼的檢閱者和作者可以隨心所欲地多次交換註解。 當作者關閉檢閱時,檢閱就會結束。 有其他討論內容時,會透過電子郵件通知其他參與者。

My Work page - code review item. Code Review page - Overall comment, file comment, Close Review link.

  1. 在 [Team Explorer] 的 [我的工作] 頁面上,移至 [程式碼檢閱與要求] 區段並按兩下要求。

    您也可以開啟要求的捷徑功能表,並選擇 [開啟]。

  2. 讀取註解並依需要回覆。 若要回覆註解,請選擇 [回覆],在出現的方塊中輸入您的註解,然後選擇 [確定]。 若要傳送您的註解,請選擇 [傳送註解]。

  3. 若要檢視檔案並查看具有註解的程式碼區塊,或是編輯檔案,請移至 [註解] 區段。 在 [檔案] 子區段中,開啟檔案的捷徑功能表,並選擇 [比較 (唯讀)] 或 [編輯檔案。]。

  4. 當您和其他檢閱者完成回應彼此的註解,並且準備好要結束檢閱時,請按一下 [關閉檢閱],然後選擇:

    • [完成],表示檢閱已完成。

    • -或-

    • [放棄],表示您取消檢閱。

4. 修正測試和程式碼

 

讀取 Julia 的註解後,Peter 依據她的建議修正單元測試。 現在測試失敗。 這表示程式碼還是不正確。

Peter 修正程式碼:

 

 

         /// <summary>
        /// Returns true if two numbers are equal.
        /// </summary>
        public static bool EqualTo(double a, double b)
        {
            // Allow for rounding errors.
            const double allowedErrorMultiple = 1/1000000;
            double allowedError = (System.Math.Abs(a) + System.Math.Abs(b)) * allowedErrorMultiple/2;
            return System.Math.Abs(a - b) < allowedError;
        }

測試再次成功:

顯示成功之測試的 [單元測試總管],這些測試是比較是否相同的測試。

提示提示

若要修正 Bug,請依照程式碼開發中的做法進行。 撰寫一項會失敗的測試,然後讓測試成功。 只有在測試成功時,才簽入程式碼和測試。

Peter 現在注意到發現 Bug 的測試案例。 重現 Bug 的步驟在測試案例工作項目中有清楚的描述。 他依照這些步驟進行,並發現發票內容正確列出。

[延伸閱讀]

ALM 開發人員的一日生活:為使用者劇本撰寫新程式碼

ALM 開發人員的一日生活 : 暫停工作、修復 Bug 和進行程式碼檢閱 (Code Review)