Protocol 規定死的名稱,好比 http header 的 key,有需要也寫成 constant,使之成為一個 symbol 嗎?如 #define HTTP_HEADER_CONTENT_TYPE "Content-Type"
latest #10
應該用一個全域常數 const char HTTP_CONTENT_TYPE[] = "Content-Type"
防滑手套該戴還是要戴。const char[] ++
#define
不是重點啦,選他只是因為寫起來最短。 # 我其實比較習慣 const char* HTTP_CONTENT_TYPE = "Content-Type"
# 這裡發現 HTTP 不是好例子,因為套疊在 HTTP 的 protocol 太多了,事情過於複雜難以解釋。後面改用 SMTP 的 HELO 來說明好了。
我在想的是 over-engineering 這件事。有經驗的人都可以看出防手殘這個好處,但是我們會在程式裡面寫幾次 "HELO"
呢?理論上架構好的程式,應該只會在 protocol handling 時處理到 "HELO"
,剩下就會變成如 a_connection.send_mail(a_mail)
這樣的 library,會需要直接用到 raw literal 的地方沒幾處。
pingooo: Good point!! 若真的會用到很多次,寫成 const 確實有好處。
back to top