※ 引述《tyc5116 (累人啊....)》之銘言:
: 如題,這是我看書想到的一個問題
: 我拿書上的題目來說,有四個class,分別是採購(Purchase),庫存(Stock),銷售(Sale)
: 以及一個中介者(Mediator)(不把虛擬的算進去的話)
: 彼此是有關聯性的,哪一天突然發現有bug,或想重構,或要修改功能,該怎麼下手呢?
: 我的問題點在於,以debug來說,假設我覺得Sale部份可能有問題
: 有辦法在過程中,先將Sale和其它class的關聯性切開,再除錯嗎?
: 又或者哪天我覺得Mediator很亂了,要進行重構,可是有關聯性的class很多
: 有辦法將Stock和Purchase切開,對Mediator與Sale相關的程式碼重構
: 再依此類推,連接Sale,切開Stock,Purchase,重構
: 連接Purchase,切開Sale,Stock,重構.....
: 若這個觀念是不對的,麻煩請指正,若這觀念可行,麻煩請說明一下實作的方向
: 謝謝
詳細完整的回答請看上一篇qrtt1的文章,我這篇只是應著推文簡單回覆一下
如有誤還請各位先進指教。
以您原文的需求來看,問題點似乎是如何針對已經做好Mediator Pattern的類別Debug
以我目前的作法是:
1. 先寫 Unit Test Case,測試 Mediator、Purchase、Stock、Sale 四個實體類別
2. 當 Test Unit 報告有 Assertion Fail 的時候
2.1 使用好的 Debugger 一步一步追蹤除錯
2.2 使用好的 Logger 傾印所有變數在執行期的變化
3. 發現發生錯誤的程式碼之後,修正他,回到 2 直到全測試通過為止。
所以您說,『有辦法在過程中,先將Sale和其它class的關聯性切開,再除錯嗎?』
除非您找得到 Sale 和 Mediator 兩者沒有關聯的部分做獨立測試與除錯,否則切開是
沒有意義的,因為 Sale 的運作是否正確,和 Mediator 有很強的關聯性,所以說,整
個除錯的過程必須包含 Sale 與 Mediator 兩者有相關的部分,無法完全切開。
後面你說能不能將 Stock 和 Purchase 切開也是一樣的道理:只能針對無關聯的部分做
測試除錯,其他有關聯部分仍然不可切開。