自己的程式自己寫! 但用 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 進行程式碼檢閱。
若要要求程式碼檢閱
在 [Team Explorer] 的 [我的工作] 頁面上,選擇 [要求檢閱]。
[新增程式碼檢閱] 頁面隨即出現。
指定一位或多位檢閱者。
指定檢閱的名稱。
指定區域路徑。
指定給檢閱者的註解。
選擇 [送出要求]。
檢閱者將會收到要求的電子郵件通知。
您也可以要求對暫止的工作、擱置集或變更集進行程式碼檢閱。 若要查看變更集的清單,請開啟 [原始檔控制總管] 並選擇 [記錄] 按鈕。
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
提示 |
---|
請注意,小組成員會使用測試做為討論的焦點。 如果測試正確且已足夠,程式碼也將如此。 與程式碼不同的是,每項測試都代表一個獨立的案例。 因此,測試通常比程式碼容易進行討論。 |
若要執行程式碼檢閱
在 [Team Explorer] 的 [我的工作] 頁面上,移至 [我的程式碼檢閱與要求] 區段並開啟要求。
在 [程式碼檢閱] 頁面上,您可以:
選擇 [接受] 或 [拒絕] 以通知作者您是否要執行檢閱。
選擇 [加入檢閱者] 將其他檢閱者加入至程式碼檢閱要求。
檢視針對此工作項目更新之每個檔案的變更。
展開 [註解],與作者及其他檢閱者討論變更。
選擇 [加入整體註解]
-或-
選取程式碼區塊,然後從捷徑功能表選擇 [加入註解]。
- 選擇 [傳送註解],讓作者和其他檢閱者看得見您的貢獻。
選擇 [傳送並完成] 完成您的檢閱,並指出程式碼是否需要進行更多處理。
3. 回應程式碼檢閱
Peter 收到來自 Julia 的程式碼檢閱並予以回應。
若要回應程式碼檢閱
程式碼的檢閱者和作者可以隨心所欲地多次交換註解。 當作者關閉檢閱時,檢閱就會結束。 有其他討論內容時,會透過電子郵件通知其他參與者。
在 [Team Explorer] 的 [我的工作] 頁面上,移至 [程式碼檢閱與要求] 區段並按兩下要求。
您也可以開啟要求的捷徑功能表,並選擇 [開啟]。
讀取註解並依需要回覆。 若要回覆註解,請選擇 [回覆],在出現的方塊中輸入您的註解,然後選擇 [確定]。 若要傳送您的註解,請選擇 [傳送註解]。
若要檢視檔案並查看具有註解的程式碼區塊,或是編輯檔案,請移至 [註解] 區段。 在 [檔案] 子區段中,開啟檔案的捷徑功能表,並選擇 [比較 (唯讀)] 或 [編輯檔案。]。
當您和其他檢閱者完成回應彼此的註解,並且準備好要結束檢閱時,請按一下 [關閉檢閱],然後選擇:
[完成],表示檢閱已完成。
-或-
[放棄],表示您取消檢閱。
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 的步驟在測試案例工作項目中有清楚的描述。 他依照這些步驟進行,並發現發票內容正確列出。
[延伸閱讀]