Slide 1

Slide 1 text

Quality Control Frank

Slide 2

Slide 2 text

你不會聽到的

Slide 3

Slide 3 text

你不會聽到的 • 怎麼寫出沒有 bug 的程式碼 • 怎麼建構⾼品質的框架 • 準則或最佳實踐

Slide 4

Slide 4 text

你會聽到的

Slide 5

Slide 5 text

你會聽到的 •開發前 •理解需求(需求、UI 、測試) •估點(需求難易、修改量、技術債) •技術⽂件 •開發中 •Code Guideline •Refactoring •SOLID Principles •開發後 •Unit Tests & Run •Code Review

Slide 6

Slide 6 text

– Edsger Dijkstra If debugging is the process of removing software bugs, then programming must be the process of putting them in.

Slide 7

Slide 7 text

Code 變差的原因 • 時間壓⼒ - 需求太多、點數不準確、不熟悉舊邏輯 • 好的架構 - 減少技術債、⾼維護性、可讀性 • Bug 數量 - 模糊的需求、粗⼼、Scope 太⼤

Slide 8

Slide 8 text

Schedule Bug Architecture

Slide 9

Slide 9 text

開發前

Slide 10

Slide 10 text

開發前 理解需求

Slide 11

Slide 11 text

開發前 • 產品 PRD • UI Design • QA Test Cases 理解需求

Slide 12

Slide 12 text

開發前 估點

Slide 13

Slide 13 text

開發前 • 以⼩時估算 • 理想時間 • Story point 估點

Slide 14

Slide 14 text

開發前 • 以⼩時估算 • 理想時間 • Story point 估點

Slide 15

Slide 15 text

開發前 • 以⼩時估算 • 理想時間 • Story point 估點

Slide 16

Slide 16 text

開發前 • 以⼩時估算 • 理想時間 • Story point 估點

Slide 17

Slide 17 text

開發前 Story point

Slide 18

Slide 18 text

開發前 • 風險 • 複雜度 • 重複性⼯作 Story point

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

開發前 技術⽂件

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

開發中

Slide 23

Slide 23 text

開發中 Code Guideline

Slide 24

Slide 24 text

開發中 Refactoring

Slide 25

Slide 25 text

開發中 • 重構不等於打掉重練 • 持續且⼩的改進 • 好架構是不斷的演進⽽來 • 問題需求 -> 現有架構 -> 想解決⽅案 -> 實作改進 -> 理想的品質 • Decoupling 解耦 Refactoring

Slide 26

Slide 26 text

Before

Slide 27

Slide 27 text

• RKLiveViewController 強依賴 RKLiveHeaderViewController • 增加新的 header 只能繼續繼承 RKLiveHeaderViewController • 多餘 override

Slide 28

Slide 28 text

After

Slide 29

Slide 29 text

• RKLiveViewController 依賴於抽象 protocol (interface) • 只要實作 protocol ⽅法就能⽤ • 有預設實作,不⽤ override

Slide 30

Slide 30 text

開發中 SOLID Principles

Slide 31

Slide 31 text

開發中 • 單⼀職責 (Single-responsibility) • 開閉原則 (Open-closed) • ⾥⽒替換 (Liskov-substitution) • 介⾯隔離 (Interface-segregation) • 依賴反轉 (Dependency-inversion) SOLID Principles

Slide 32

Slide 32 text

單⼀職責

Slide 33

Slide 33 text

單⼀職責

Slide 34

Slide 34 text

單⼀職責

Slide 35

Slide 35 text

開閉原則

Slide 36

Slide 36 text

開閉原則

Slide 37

Slide 37 text

開閉原則

Slide 38

Slide 38 text

開閉原則

Slide 39

Slide 39 text

開閉原則

Slide 40

Slide 40 text

開閉原則

Slide 41

Slide 41 text

開閉原則

Slide 42

Slide 42 text

⾥⽒替換

Slide 43

Slide 43 text

⾥⽒替換

Slide 44

Slide 44 text

⾥⽒替換

Slide 45

Slide 45 text

⾥⽒替換

Slide 46

Slide 46 text

介⾯隔離

Slide 47

Slide 47 text

介⾯隔離

Slide 48

Slide 48 text

介⾯隔離

Slide 49

Slide 49 text

介⾯隔離

Slide 50

Slide 50 text

介⾯隔離

Slide 51

Slide 51 text

依賴反轉

Slide 52

Slide 52 text

依賴反轉

Slide 53

Slide 53 text

依賴反轉

Slide 54

Slide 54 text

開發後

Slide 55

Slide 55 text

開發後 Unit Tests & Run

Slide 56

Slide 56 text

開發後 Code Review

Slide 57

Slide 57 text

Reference • https://www.lucidchart.com/blog/how-to-estimate-agile-story-points • https://www.atlassian.com/agile/project-management/estimation • https://speakerdeck.com/josephj/javascript-code-quality • https://en.wikipedia.org/wiki/SOLID

Slide 58

Slide 58 text

Thank you~