網路上看到的心得好文
『你的問題是甚麼?』 『你要用甚麼方法來解決問題?』 ※ Unit Test 確保程式想寫的和你想的一樣 『說明文件往往過時無參考意義、程式出錯了不知道錯在哪裡、需求異動常常改東壞西』,因此你需要 Unit Test,透過單元測試可以讓你快速發現問題之所在,雖然初期會花費時間與成本在撰寫看似毫無意義的程式,但是在系統由開發進入維護後,效益就會慢慢顯現出來。 那 Unit Test 有甚麼特性呢? 最小的測試單位 外部相依性為零 不具備商業邏輯 測試案例之間的相依性為零 一個測試案例只測試一件情 要達到這些特性,程式碼重構還是必須的,過去在撰寫程式的時候,我們往往讓物件與物件之間十指緊扣、緊緊相依。這時我們就應該使用介面 Interface,斷開物件與物件糾結的鎖鏈。 過去我們在撰寫程式的時候,常常一個函式數十行或長達數百行,讓程式不僅無法閱讀也無法達到可測試性,這時我們就必須要重構,將各別處理的邏輯獨立開來,這樣我們才能夠讓這所謂的『黑箱』慢慢變成『白箱』。 但是對於已經發臭到不行沒人敢維護的程式碼,到底該怎麼樣重構才好呢?我們可以透過黑箱的測試先錄製測試的結果,比方說用 Firefox Plugin Selenium 來錄製測試案例,再來進行程式碼的重構。 當有了這樣的測試案例來輔助,讓你的程式碼即便再『黑』,擦上 SKII 也能夠讓你『白』回來! ※ TDD 確保你先想清楚才動手寫 當你會寫單元測試後,接下來就可以朝著 TDD 的步伐邁進! 所謂的 TDD 就是 Test-Driven Development 測試驅動開發。 這樣的開發方式對我來說算其實是相當的陌生,過去的開發方式我們 習慣先以需求為主 ,然後構思這個需求需要那些功能,再針對這些功能進行開發。在這樣的過程中往往會過度發散所需要的功能,常常會考量東、考量西的做了一堆例外的過濾。 而 TDD 就是以 用『測試』來輔助『開發』 ,我們先寫好 Test Case,才進行功能的開發,讓 Test Case 從紅燈變成綠燈,才繼續撰寫下一個 Test Case。透過這樣的 『 輔助』 ,可以讓你更 『專注』 在 Test Case 的處理,才不會過度發散浪費不必要的時間在無謂的功能上面。 就跟安西教練