API設計之超前設計

大量超前設計

敏捷社區很早提出的理念是“變化是廉價的”,不要過度設計。你可以在之後經常地變動設計。

當用來開發一個控制所有部分的應用程序時,這一理念可能是正確的。但是當你開發的API被設計成外部用戶使用,使用場景可變。你的API將成爲其他人程序的一部分,改變API對你可能是廉價的,但對於使用這一API的用戶改變是昂貴的。

公共API接口的改變是昂貴的

你的API可能由公有部分和私有部分組成。公有部分是與客戶端進行交互的部分,這也叫公共接口。

如果你變化公有API可能會面臨API使用者不能使用代碼的風險,這是使用者不允許的。因此在變更前要及其慎重考慮到這一點。

私有部分是不太敏感的,只要不影響API的功能,你可以用你喜歡的方法改變內部結構。

超前設計

爲了最大限度地避免公共API接口發生變化,需要花大量時間分析設計你API的功能,和這一接口的樣子。

你可能需要考慮一下幾個問題:

  • 公共接口的樣子
  • 接口應該怎樣配置
  • 接口默認是什麼
  • 是否有API的抽象層可以選擇

事實上,在超前設計階段,以上的問題都要考慮。

對我的開源API,Butterfly Components,我花了很長時間分析這些API去做什麼,和如何獲取這些API,也有用戶應該有什麼樣的公共接口。即便這樣,我也會花了少量時間改變公共接口來重新適應未來需求,或者改正那些過去沒有分析和設計的部分。

當你確實需要改變API應該怎樣做

當你發現確實需要要改變公有API接口,一下是你應該考慮的:

  1. 提供一個替換接口,同時在API中保留老的接口
  2. 在老接口上加棄用標誌用來提醒用戶切換到新接口

    當發行幾個帶棄用接口的版本後你可以考慮將接口完全移除。但一定要給使用你API的用戶在他們的空間中進行更新的機會。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章