兩段程式碼若共享同樣的知識,通常該合併。
範例:HTTP 伺服器(再訪 5.4 節)#
某 HTTP 伺服器的初版用了兩個分屬不同類別的方法:
- 第一個方法:從 socket 讀請求,存入字串
- 第二個方法:解析字串、抽出請求各部分
問題:這兩個方法都對 HTTP 請求格式有大量知識。
- 第一個方法只想「讀」、不想「解析」
- 但若不先解析 header(例如
Content-Length),它根本判斷不出請求結束在哪
由於這份共享資訊:
把讀取與解析放在同一處才合理。
兩個類別合併後,程式碼變得更短、更簡單。