你所不知道的 DDD - ⽂件驅動開發
Leo 李歐
• LILEE Systems - Front-End Manager
• ⽔球軟體學院 ALPHA Leader
• Angular Taiwan 社群管理員
• 前端精神時光屋 3rd 前端評審
• ⼤神來六⾓ 2020/2021/2022
• 「Angular 深入淺出三⼗天」
• 「Angular Schematics 實戰三⼗天」
• 「Angular 深入淺出三⼗天:表單與測試」
(陳志龍)
Domain-Driven Design
Document-Driven Development
什麼是⽂件驅動開發?
先寫⽂件,再開發
⽂件的定義
• 包含但不限於任何⽂字、圖像的紀錄
• 形式不拘,但最好是數位的檔案
• 例如:規格需求書、API Spec、Test Plan、DoD (De
fi
nition of Done)、
Swagger UI...等等。
• 任何可以幫助溝通、後續開發與維護的記錄都算是我這邊所定義的「⽂件」
範圍內
為什麼要⽤⽂件驅動開發?
⼯程師的⽇常
A. 到職時發現公司沒有⽂件,難以融入
B. 嫌棄 Legacy Code 的同時,製造著 Legacy Code
C. 邊開發邊想怎麼開發,邊想怎麼開發邊開發
D. 開發完功能才寫⽂件,為了交卷⽽寫
困擾與痛苦的原因
1. 沒有⽂件
(曾經寫了但後續沒維護也⼀樣)
2. 沒有先想清楚就開發
3. 沒有先寫⽂件
⽤⽂件驅動開發有什麼好處?
⽤⽂件驅動開發的好處(公司)
• ⽩紙⿊字,有憑有據
• 知識與 Domain Know-How 的傳承
• 有助於團隊之間的溝通
⽤⽂件驅動開發的好處(個⼈)
• 提昇開發效率與後續維護性
• 提昇架構規劃能⼒與⼤局觀
• 不會覺得寫⽂件會浪費時間
怎麼開始⽂件驅動開發?
寫⽂件 Review
寫完
開發
主管/PM/資深同仁/TA
發現問題
沒問題
第⼀步
修改⽂件
改完
開發
開發時
發現問題
修改⽂件
發現問題
開發
開發完成
開發完成
Code Review &
⽂件 Review
⽂件驅動開發的⼼法
• 開始時的⽂件不需要寫到 100% 完美
• ⽂件跟程式碼⼀樣需要維護,維護時也別忘記先修改⽂件再修改程式碼
• ⽂件不是寫來給⾃⼰看就好,務必找⼈幫忙 Review
如何說服別⼈使⽤此⽅法
從⾃⼰開始 - DoD
• De
fi
nition of Done ,意即去定義你要做的事情要做到什麼程度才叫完成
• ⽂件內容
1. ticket/task/規格需求書內容(有連結可⽤連結)
2. break down 並寫下要做的確切事情(流程圖、API Spec/References)
3. 如何驗證你做的功能或事情有做對/做到位(Test Cases)
4. 請開ticket/task/規格需求書的那個⼈或是同事幫你 review
總結
• ⽂件驅動開發簡單⽤⼀句話來說就是:先寫⽂件再開發
• 先寫⽂件是為了強迫⾃⼰思考,以利後續開發與維護
• ⽂件有助於知識傳承與溝通,對所有⼈都是 Z > B
• ⽂件跟程式碼⼀樣需要維護,維護時也別忘記先修改⽂件再修改程式碼
• ⽂件不是寫來給⾃⼰看就好,務必找⼈幫忙 Review
Q & A
“寫作不只是思考之後的「結果」,它是你的思考真正發⽣的「地⽅」”
–Waki 瓦基(風靡歐美的卡片盒筆記法是什麼?12個法則和重點整理的作者)
Leo’s Coding Life 粉專 ⽔球軟體學院 Discord
Thank You!!

你所不知道的 DDD - 文件驅動開發