ASP.NET-refactoring to patterns
- 25. 綠燈
填入 重構
綠燈
紅燈
填入 重構
紅燈
紅燈
- 27. 切換為說話模式
› 不同物流商,使用對應的計價方法
› 根據條件,使用對應的演算法
- 37. 綠燈 綠燈
寫程 填入 重構
重構
式
紅燈 紅燈
Notes de l'éditeur
- 重構前後:https://gist.github.com/2041769
- 從一開始用web自動測試,然後註解、重構擷取方法、抽象、類別職責分離、單元測試、行為抽象介面、到patterns
- 『每個女人都喜歡乾淨的男人,但是又喜歡把男人弄髒』同樣地,『每個dev都喜歡乾淨的code,但是又喜歡把code弄髒』,我們面對的現況就是不斷被弄髒的CODE
- 我們的目的,就是希望可以讓雜亂無章的CODE,乾淨整齊的放在他所屬的地方
- 不代表把重構跟程式碼修改,兩個動作混在一起,一次只做一件事。這邊指的是在需求修改程式時,可以在交付前順手重構。
- 3D螺旋式的循環。上層為整合測試,逐漸Drill down單元測試。
- 現況的程式碼,雖然垃圾,但他可以正確的執行。
- 小說需要角色來說話,系統需要程式碼說話
- 最終目標,是讓程式碼自己會說話
- 程式碼的現況,跟一堆垃圾沒什麼兩樣。但是,有了人話的描述之後,我們就可以對垃圾進行分類
- 只要有動到程式,就記得要跑測試,代表重構完的執行結果仍是正確的v0=>v1
- 現在所屬的物件是什麼,要用該物件的角度去看世界
- v1 => v2,這時候測試會出現紅燈,因為新類別的方法是空的
- v2=>v3做好自己的事,把需要的資訊,叫別人負責提供Tell, Don’t Ask
- 羊毛出在羊身上,單元測試的test case,往往可以從整合測試的test case找到蛛絲馬跡3AArrangeActAssert
- V3=>v4, 頁面都沒改變將原本頁面的方法內容,搬到Library裡對應的類別方法中執行測試,由紅轉綠
- V4=>v5照樣造句,只把相依改為介面。1.從client自動產生介面方法2.從類別 重構=>擷取介面
- V5=>v6Strategy+factory method
- V6=>v7把初始化物流商,交給工廠決定
- 職責獨立、關注點分離
- 韋恩咖啡:在這程式變美之前,我不能睡職責分清,關注點分離 程式碼自己會說話 隨時可以再重構只要綠燈,隨時可以發佈整合測試與單元測試建立完畢
- 請問大家,有人知道三間物流商是怎麼計算運費的嗎?沒有?那就對了,重構,不一定要知道細節,重點在抽象地釐清程式碼。