2013年10月3日 星期四

Round 5: Unify when you can; separate when you must

U步驟:第四輪結束時,所有class與function均存放在同一個file main.cpp,如下:

main函數是一個劇烈變動點,經常透過編輯code的方式主功能(production code)測試(test code)間切換。將此問題具體敘述如下:

SP5:分割程式碼,建立測試專案,與production專案分立。

D步驟:要解決SP5,必須要使test code與product code不共用 main function。具體的做法是自innerProduct專案拆出另一個測試專案,暫時稱為 vectorTest專案,並設法讓兩個專案共用 vector, inputVector, outputVector 與 innerProduct,示意如下:


建立待辦工作如下:
T11 分割test code、vector與相關函數
T12 建立test project, 修訂inner product project。

C步驟:

T11 分割test code、vector與相關函數

1. 將main.cc中vector與相關的函數搬到二個檔案,vector.h與vector.cpp,在main.cc中引用 vector.h。編譯,修正錯誤。

2. main.cc中test code搬移至另一個檔案,vectorTest.cpp
vectorTest.cpp中引用 vector.h,編譯,修正錯誤。

(學習課題:為class與函數分別建立 header file(宣告)與 implementation file(定義),亦即 interface in .h file, implementation in .cpp file)
(學習課題:#ifndef, #define, #endif的使用)

T12 建立test project。

1. 建立 test project:vectorTest.cpp code併入 main function所在的mainTest.cpp;設定CppUnitLite 路徑;在test project中加入 vector.h、 vector.cpp;編譯,修正錯誤。

2. 移除原 innerProduct專案之CppUnitLite 路徑設定,移除並刪除vectorTest.cpp。

L步驟:現在,你已擁有 a production project and a test project各一個!接下來將能更容易的為vector及相關函數做更多測試。再度檢視待辦工作,我們發現只剩SP2了。解或不解?請你自己決定。inner product問題,將暫告一個段落。





© Y C Cheng, 2013. All rights reserved.

沒有留言:

張貼留言