SlideShare une entreprise Scribd logo
1  sur  38
 現況
 目的
 重構時機與目標
 重構循環
 請你跟我這樣做
 結論
綠燈


填入        重構


     紅燈
綠燈


填入        重構


     紅燈
綠燈


填入        重構


     紅燈
綠燈


填入        重構


     紅燈
綠燈


填入        重構


     紅燈
綠燈


填入        重構


     紅燈
綠燈


填入        重構


     紅燈
綠燈


填入        重構


     紅燈



     紅燈
綠燈


填入        重構

                    綠燈
     紅燈

               填入        重構

     紅燈
                    紅燈
綠燈


填入        重構


     紅燈
   切換為說話模式
    › 不同物流商,使用對應的計價方法
    › 根據條件,使用對應的演算法
綠燈


填入        重構


     紅燈
 頁面只保留頁面職責
 把初始化物流商,交給工廠決定
紅燈
 把不需要的註解清除
 把需要的API Document補上
綠燈


填入        重構


     紅燈
 只要綠燈,隨時可以發佈
 隨時可依據需求,繼續重構
 一次只做一件事
綠燈             綠燈

寫程             填入        重構
          重構
 式


     紅燈             紅燈
ASP.NET-refactoring to patterns

Contenu connexe

En vedette

Synco automotive parts catalogue
Synco automotive parts catalogueSynco automotive parts catalogue
Synco automotive parts catalogue
Synco Shot Blasting
 
Ralph martire slide show 4 14-11
Ralph martire slide show 4 14-11Ralph martire slide show 4 14-11
Ralph martire slide show 4 14-11
campusfacultyassoc
 

En vedette (8)

Synco automotive parts catalogue
Synco automotive parts catalogueSynco automotive parts catalogue
Synco automotive parts catalogue
 
Aart1400 seminar
Aart1400 seminarAart1400 seminar
Aart1400 seminar
 
Synco Industries Limited
Synco Industries LimitedSynco Industries Limited
Synco Industries Limited
 
Ralph martire slide show 4 14-11
Ralph martire slide show 4 14-11Ralph martire slide show 4 14-11
Ralph martire slide show 4 14-11
 
Agile tour Taipei 2014 - coding dojo with CSharp and TDD
Agile tour Taipei 2014 - coding dojo with CSharp and TDDAgile tour Taipei 2014 - coding dojo with CSharp and TDD
Agile tour Taipei 2014 - coding dojo with CSharp and TDD
 
Blasting Rooms for Shot/Sand Blasting
Blasting Rooms for Shot/Sand BlastingBlasting Rooms for Shot/Sand Blasting
Blasting Rooms for Shot/Sand Blasting
 
Shot Blasting/Sand Blasting Safety Wear and Spare Parts
Shot Blasting/Sand Blasting Safety Wear and Spare PartsShot Blasting/Sand Blasting Safety Wear and Spare Parts
Shot Blasting/Sand Blasting Safety Wear and Spare Parts
 
Log parser lizard
Log parser lizardLog parser lizard
Log parser lizard
 

ASP.NET-refactoring to patterns

Notes de l'éditeur

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