2010-04-12 27 views
85

在設計API時,我可以堅持哪些準則和最佳實踐?至少,我知道一個API應該易於使用和靈活。不幸的是,這些術語可能相當主觀,所以我一直在尋找一些關於良好API設計的具體指導方針。設計API的最佳實踐和指導原則

+0

哪種語言/平臺? C#? C++? Java的?肥皂?休息? – bobbymcr 2010-04-12 04:21:46

+1

必須有這方面的互聯網資源...例如http://chaos.troll.no/~shausman/api-design/api-design.pdf – WhirlWind 2010-04-12 04:22:28

+1

+1很好的問題。我很受限於你的應用程序設計的'框架'/是非直觀的。 – Gishu 2010-04-12 04:29:35

回答

55

我發現下面是值得一看 Joshua布洛赫 - How To Design A Good API and Why it Matters

這個例子雖然在Java中,但仍然可以繪製平行線。既然你沒有提到特定的技術,我假設你不需要利基解決方案。

+11

[更高分辨率的相同視頻(YouTube)](http://www.youtube.com/watch?v=heh4OeB9A-c) – 2014-03-06 07:46:12

+0

[REST API架構 - 最佳實踐](http://dasunhegoda.com/rest- api-architecture-best-practices/1049 /) – Techie 2015-11-18 17:10:56

30

正如有人誰能夠消費模式噸原料藥......

請把你的API以一致的方式:

  1. API本身內部的一致命名。使用動詞,名詞,關鍵字完全相同的風格。

  2. 與目標環境一致,它將被使用。如果使用.NET,請參閱Microsoft的命名指南。

  3. 一致的概念。工廠模式? Builder模式?靜態方法?接口?只需選擇一個,然後堅持下去。真。有沒有這樣的事情規則的例外。它會作爲一個大拇指拇指突出。超過1個例外?你的API越來越多的是業餘愛好者。

這是另一個:特異性。

  1. 我可以實現的基類,如果你選擇提供它們,應該有很少和明確定義的函數來實現。不要告訴我「GetData()」返回一個「object []」,然後期望我實現它,找出爲什麼我必須將它轉換爲字符串[],然後調試爲什麼它被調用了20次。 有DataPoint [] GetChartData(),string [] GetLabelData()等,讓我選擇我應該實現哪些是好得多。

  2. 請不要傻得跟名字:PostRenderColorWheelModifyHSVBaseHandler。 您經常可以將超特定的東西重構爲更通用的名稱+參數。

  3. 字符串參數是否定的!使用枚舉。我不想使用像處理程序

    PostRenderHandler(「ColorWheel」,「HSV」,someDelegate);

我寧願像一個枚舉我可以調查:

PostRenderHandler(ModuleType.ColorWheel, Options.ColorWheelHSV, someDelegate); 

男人,我可以繼續下去...電力到喬希布洛赫傢伙 - 寫得很好的API可真真棒壞的可能會非常痛苦。

+1

感謝您的反饋!是的,約書亞布洛赫人真棒。我一點也不驚訝他的名字出現。我相信他寫了Effective Java的書。 – 2010-04-12 18:12:05

+1

是的,他是作者。這本書非常非常好。這些規則和建議似乎是「Clean Code」的第一部分。 – Bakudan 2012-11-30 00:51:56