2020年7月12日 星期日

[筆記] API 設計概念 — 下篇

  下篇整理演講後半的內容,主要更進一步探討類別跟函式的設計概念。

類別設計


減少易變性(mutability)

  • 除非有好理由,不然類別應該要 immutable:好處是單純、thread-safe、可重複使用;缺點是每個不同的值都是獨立的物件,也就是為了改一個值,就要放棄現在的物件取得新的物件。
  以 python 為例,int 是 immutable 的,所以使用 '1' 的值,它只要產生一次對應的物件,後續只要使用到 '1' 的值,就使用同一個物件即可。
>>> id(1)
10914496
>>> x = 1
>>> id(x)
10914496
2020年7月11日 星期六

[筆記] API 設計概念 — 上篇

  當初在設計 MLGame 專案時,為了能夠讓遊戲開發者和玩家能夠使用 MLGame 架構,於是嘗試查了關於 API 設計的概念。本篇整理一場 Google 的技術演講,演講標題為「How to Design a Good API and Why it Matters」,演講雖然是在講 API 的設計概念,但我認為這些概念在平常撰寫程式上也很受用。演講以 Java 為舉例語言,文章中會引用演講中的例子,我也會盡量舉在專案中(以 Python 撰寫)遇到的情況。
上篇整理演講前半段的部分,主要是 API 設計的通用概念。

為何 API 設計重要?


  • 好的 API 可以是公司最重要的資產之一:客戶會使用 API 來製作產品,同時也會學習使用 API。而放棄一個 API 去學習另一個全新的 API 的成本太高,所以一個好的 API 會吸引客戶來使用
  • 壞的 API 就會是公司的負債:客戶會佔滿客服線路。公司要修改 API 也會困難重重,造成技術負債
  • 發布的 API 就發布了:修改 API 可能會造成客戶的程式崩潰。

為何 API 設計對你重要?


  • 平常寫程式也是在做 API 設計:好程式是模組化的,而模組之間的界線就是 API。而且好的模組應該要能夠一再被重複使用
  • 以 API 設計的方式去寫程式可以增進程式品質