<style> .reveal * { text-align: left; } * { font-size: 32px; } </style> # Live Code coding dojo --- ## TDD (Test Driven Development) 1. 紅燈:先寫失敗的測試案例。 2. 綠燈:快速實作功能讓測試案例通過。 3. 重構:在不改變功能的前提下,修改程式碼。改善可維護性。 搭~晚安(X) --- ## TDD 不(只)是什麼 - 不是 production code 的檢驗 - 不是測試方法 - 不是單元測試 - 不是 Bottom Up --- ## TDD 是什麼? - 是一種幫助開發的方式 - Input - process - ouput 精神的展現 --- ## TDD 精神展現的好處 - 透過測試想清楚 input, output e.g. 實際的 test case 與 Gherkin Style 的描述 - Outside-In 從可以直接驗證的 test case 一路將依賴往系統邊界推至系統外的依賴資源。 - 增量式開發:每一次完成的 input / output 都可以明確功能上進展 --- ## 其他好處 - Over-engineering (過度設計) - API feedback (改善API的設計與可用性) - Logic errors (想的跟寫的不一樣,寫的跟需求不一樣) - Documentation (寫跟維護文件是痛苦的) - Feeling overwhelmed (找不到切入點) - Separate interface from implementation thinking (抽象設計) - Agreement (確保已修正問題的證據) - Anxiety (改東壞西的擔心受怕) --- ## 現實中的 TDD 想直接在工作裡練習 TDD,但卻不知道怎麼起手 - 規格不清 - 難以定義起手的案例 - 在一堆 legacy 中看不到壞味道 - 書上講的重構方法與實務脫節 --- ## Coding Dojo - Kata - 從 0 開始 kata - 重構: - 純練習重構 - 刻意練習不同的 pattern - 現實專案 - 從現實商業邏輯平行出來實作練習 e.g. 購物車、驗證、表單 - 功能封裝 e.g. 將邏輯抽出來復用 --- ## Time to live code: Siebala - 需求分析 - 實作規劃 - 實作(講一些上課聽到的原則) --- ## 需求分析 - 素材 - Glossory: Naming Issue - Test Cases: 驗收、規格釐清 - Input-Process-Output - 預計 TODO - 初步架構 - 顆粒度更細的 test cases --- ## 需求分析 insight - 商業邏輯命名 - Roll ? Round ? Game ? - Dices vs Die - (X) 一開始就想要設計出所有的 class 跟 method - (O) test driven 由測試情境來驅動產生 class, function api - (X) 照著 TODO 開始做 - (O) outside-in 由外而內 - (X) 有哪些 test case 就直接開始 - (O) 小步快跑 --- ## 注意事項 - 不太熟悉 typescript 使用 ˊ ˇ ˋ - 有大量 webstorm 快捷鍵操作 --- ## Siebala --- ## React TDD ? --- ### 需求分析 Todo List - 使用者看到所有的 todo - 使用者可以點擊完成 todo - 使用者可以再點擊取消完成 todo - 使用者可以新增 todo --- ## Insight - 跳脫單元測試 - DOM > Logic > Style --- ### Input / Output - input - type in todo - fetch todo data - output - list todo item - submit show todo ---
{"metaMigratedAt":"2023-06-16T23:20:53.784Z","metaMigratedFrom":"Content","title":"Live Code coding dojo","breaks":true,"contributors":"[{\"id\":\"86a7872f-9daf-4f59-bc87-34596151c072\",\"add\":1955,\"del\":40}]"}
    364 views
   Owned this note