兩段程式碼若共享同樣的知識,通常該合併。

範例:HTTP 伺服器(再訪 5.4 節)#

某 HTTP 伺服器的初版用了兩個分屬不同類別的方法:

  1. 第一個方法:從 socket 讀請求,存入字串
  2. 第二個方法:解析字串、抽出請求各部分

問題:這兩個方法都對 HTTP 請求格式有大量知識。

  • 第一個方法只想「讀」、不想「解析」
  • 但若不先解析 header(例如 Content-Length),它根本判斷不出請求結束在哪

由於這份共享資訊:

把讀取與解析放在同一處才合理。

兩個類別合併後,程式碼變得更短、更簡單