第四梯次
2024年11月23、24日(六、日) / 09:30-16:30,兩天共12小時
你的重構有讓系統設計變得更好,還是一不小心就越改越糟?在重構的過程中,你經常遇到「小勝利易得,大架構難尋」的情況嗎?Teddy提出「重構成整潔架構(Refactor to Clean Architecture)」為目的的重構方法,以達成整潔架構分層、依賴、跨層原則為最終目標,透過移除基本型別依戀、套用領域驅動設計(DDD)的戰術設計模式為手段,在重構過程中建立領域模型與通用語言,最終達成將架構重構為整潔架構的目的。
- 採用由上而下的系統化方法,將有自動化測試的既有系統重構成整潔架構
- 透過重構徹底了解整潔架構的實作細節,包含分層原則、依賴原則、跨層原則、Main Component、依賴注入
- 將DDD的戰術設計模式(Aggregare、Entity、Value Object、Repository)應用於整潔架構中
- 實踐Pattern-Oriented Problem Solving (模式導向解決問題方法)
- 了解通用語言如何協助重構與建立領域模型
課程大綱:
- 重構簡介
- 為什麼很難透過重構改善軟體架構?
- 將Task List Kata重構成整潔架構:
- 步驟一:Task List Kata介紹
- 步驟二:分層原則、移除基本型別依戀壞味道、建立通用語言、使用DDD戰術設計模式、遵守Aggregate Root設計原則
- 步驟三:尋找更多Entities Layer的物件
- 步驟四:建立Use Cases Layer物件、區分Command Use Case與Query Use Case(在使用案例層讀寫分離)、依賴反轉、依賴注入、套用Repository、Controller、Presenter、DTO(Data Transfer Object)、Mapper等設計模式。
- 步驟五:在Interface Adapters Layer形成Controllers、依賴注入、Presenter設計模式的使用方法討論。
- 步驟六:Main Component,使用SpringBoot作為依賴注入框架。
- 步驟七:在Interface Adapters Layer增加Web Controllers (使用SpringBoot)。
- 步驟八:使用Persistent Object 以滿足跨層原則,重新設計Repository介面與Mapper。
- 步驟九:使用關連式資料庫,透過 JPA (Java Persistence API) 使用SpringBoot連結H2資料庫。
- 架構設計討論與重構回顧
課程包含講解與實作練習,小組教學,隨時排解實作練習時遭遇的困難。
※ 注意:課程練習範例Task List Kata有C#, Go, Java, Kotlin, Python, Ruby, Scala, Typescript等版本,上課練習採用Java語言示範,使用不同語言的學員可在課後選擇自己熟悉的語言練習重構成整潔架構。
本課程適合下列人士:
- 想要透過重構手法,對既有系統產生架構改善的人。
- 想徹底了解整潔架構 (Clean Architecture) 與領域驅動設計的戰術設計模式(包含Aggregate、Entity、Value Object、Repository、Application Service)
- 苦無系統化方法學習軟體重構之有理想、有抱負的程式設計師。
- 想成為一位有能力償還技術債的工程師。
- 對物件導向設計有興趣者。
- 接下爛攤子維護既有軟體系統的工程師。
- 有志成為軟體架構師者 (什麼都要懂一點 XD) 。
專業師資:陳建村 (Teddy Chen)
|
相關影片:
- 領域驅動重構練習 1:ReadmeMarkdownGenerator
- 領域驅動重構練習 2:Generic Programming
- 領域驅動重構練習 3:Lambda
- 領域驅動重構練習 4:用Domain Storytelling與ChatGPT建立通用語言
- 領域驅動重構練習 5 :Ubiquitous Language in Code
- 領域驅動重構練習 6:架構分層
- 領域驅動重構練習 7:移除基本型別依戀,變身值物件
- 領域驅動重構練習 8:用Clean Architecture分層:Entity Layer
- 領域驅動重構練習 9 用Clean Architecture分層:Use Case Layer
- 領域驅動重構練習 10:用Clean Architecture分層:Adapter Layer
- 領域驅動重構練習 11:毒瞎阿紫(上):不能光從形狀判斷用途
- 領域驅動重構練習 12 :毒瞎阿紫(下):你的Builder有在「建構」嗎?
- 領域驅動重構練習 13:把阿紫的眼睛治好:這段程式碼要如何重構?
- 程式碼壞味道 1:Duplicated Code
- 程式碼壞味道 2:Primitive Obsession
相關文章:
- 什麼是Refactoring?
- 談談壞味道(1):Duplicated Code
- 談談壞味道(2):Long Method & Large Class
- 談談壞味道(3):Long Parameter List & Divergent Change
- 談談壞味道(4):Shotgun Surgery & Feature Envy
- 談談壞味道(5):Data Clumps & Primitive Obsession
- 談談壞味道(6):Switch Statements & Parallel Inheritance Hierarchies
- 談談壞味道(7):Lazy Class & Speculative Generality
- 談談壞味道(8):Temporary Field & Message Chains
- 談談壞味道(9):Middle Man
- 談談壞味道(10):Inappropriate Intimacy
- 談談壞味道(11):Alternative Classes with Different Interfaces
- 談談壞味道(12):Incomplete Library Classes
- 談談壞味道(13):Data Class
- 談談壞味道(14):Refused Bequest
- 談談壞味道(15):Comments
- 更精確的壞味道定義(上)
- 更精確的壞味道定義(中)
- 更精確的壞味道定義(下)
- 用Rename和Rename Method移除Comments怪味道
- 用Introduce Assertion移除Comments怪味道
- 用Extract Method與Extract Class移除Duplicated Code怪味道
- C.C. Agile Sprint 43 - 重構三兩事 / Teddy Chen (投影片)
費用
原價:$38,000元早鳥優惠票:$29,900 元(2024/10/20前報名)
泰迪之友票:$29,000 元
兩人同行價:$28,900 元(每人)
泰迪之友:需參與過泰迪軟體兩日以上付費課程者,本人即具有泰迪之友資格。
費用已包含:發票、咖啡茶水、午餐、課程證書 (本課程不使用紙本教材講義)。
每位學員贈送課程範例原始碼與參考解答,可帶回開發團隊中直接使用。
請學員自備筆記型電腦並安裝JDK與IntelliJ開發環境。
本課程已結業梯次:
- 2024年4月22、23日(一、二)
- 2024年5月25、26日(六、日)
- 2024年7月27、28日(六、日)
2024計畫開課班次:
- 2024年11月23、24日(六、日)
注意事項
- 報名方式:先填寫線上報名表,確認開課後將收到匯款通知,再行繳費即完成報名。
- 主辦單位將於開課日三天前以e-mail寄發上課通知,若未收到通知者請來電確認。
- 已完成繳費學員若因故無法上課,在開班日前一日申請退費者,退還已繳學費全額。開班日當天到課程進行1/3申請退費者,退還已繳學費四成。課程進行超過1/3之後無法上課將不予退費。 未達開班人數則延期或全額退費。
- 開課單位保留是否接受報名之權力。如遇天災或其他不可抗拒因素導致原訂日期無法開課,開課單位保留修訂日期權利。