自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

優(yōu)秀API設(shè)計(jì)的十大原則

開發(fā)
每個(gè)軟件開發(fā)人員都使用API?!皟?yōu)秀”的API設(shè)計(jì)就像魔法。不過,我不知道有多少人可以解釋為什么有的API很復(fù)雜、很難學(xué),而有的則干凈、簡(jiǎn)單、使用起來(lái)堪稱是一種快樂。關(guān)于這個(gè)問題,我將在文中回答,并提供優(yōu)秀API設(shè)計(jì)的十條法則。

每個(gè)軟件開發(fā)人員都使用API。“優(yōu)秀”的API設(shè)計(jì)就像魔法。不過,我不知道有多少人可以解釋為什么有的API很復(fù)雜、很難學(xué),而有的則干凈、簡(jiǎn)單、使用起來(lái)堪稱是一種快樂。關(guān)于這個(gè)問題,我將在文中回答,并提供優(yōu)秀API設(shè)計(jì)的十條法則。

1.只做你今天需要的

這是最***的規(guī)則。只解決今天必須解決的問題,最小化需要完成的答案。解決明天的問題的誘惑力是巨大的。但是一定要頂住誘惑!不要提前發(fā)布代碼,重點(diǎn)是注重縮小發(fā)布周期。如果需要花幾個(gè)小時(shí)的時(shí)間來(lái)回答新問題,那么就不用再猜測(cè)明天會(huì)出現(xiàn)什么問題了。

2.API模塊化

將大型問題轉(zhuǎn)化為規(guī)模較小的、可單獨(dú)解決的問題。模塊化API更容易學(xué)習(xí),并且可以隨時(shí)間而改變。你可以用新模塊替代舊模塊??梢砸粋€(gè)一個(gè)地教導(dǎo)模塊。也可以將API的實(shí)驗(yàn)部分從穩(wěn)定或傳統(tǒng)的部分中單獨(dú)分出來(lái)。

3.使用結(jié)構(gòu)化語(yǔ)法

使用結(jié)構(gòu)化的API語(yǔ)法:用thing.action或thing.property代替do_action_with_thing。語(yǔ)法將自然而然地適應(yīng)模塊化的方法,其中每個(gè)模塊是一個(gè)類。

4.使用自然語(yǔ)義

不要發(fā)明新概念。只使用開發(fā)人員眾所周知的概念,作為類系統(tǒng)的基礎(chǔ)。如果你發(fā)現(xiàn)自己需要解釋概念,那說明你出錯(cuò)了:要么你在解決以后的問題,要么你正在錯(cuò)誤地構(gòu)建API。

5.API的自我約定

每個(gè)類都要嚴(yán)格使用相同的樣式和約定。一致性是指當(dāng)一個(gè)人學(xué)會(huì)這一個(gè)類時(shí),他就能夠融會(huì)貫通地掌握全部的類。文檔化約定,讓它們成為貢獻(xiàn)者必須的標(biāo)準(zhǔn)。

6.API的可擴(kuò)展性

易擴(kuò)展性有許多好處,并不僅僅在于受到貢獻(xiàn)者的歡迎。它還可以讓你延緩實(shí)現(xiàn)功能,因?yàn)?ldquo;如果需要的話,后面再添加也很方便”。不需要的功能就不添加,這也是一種雙贏。

7.完全測(cè)試

每個(gè)類和方法必須經(jīng)過惡意代碼的完全測(cè)試。要像寫代碼一樣寫測(cè)試,然后像API提供給外界約定文檔一樣使用測(cè)試。每當(dāng)代碼改變的時(shí)候就運(yùn)行這些測(cè)試。不要擔(dān)心代碼覆蓋率。重要的是外部約定。也可以考慮使用約定生命周期。

8.分層式成長(zhǎng)

保持API突出重點(diǎn),然后在頂部將新的API分層,以便于它們能隨著時(shí)間的推移成長(zhǎng)??蓴U(kuò)展性并不意味著***期的成長(zhǎng)。明確API的范圍,并在范圍內(nèi)執(zhí)行。

9.保持簡(jiǎn)單易用

最終的測(cè)試要看API的簡(jiǎn)單易用程度。你寫的例子,能不能讓你的代碼看起來(lái)更簡(jiǎn)單?你是不是強(qiáng)迫用戶說明他們不在乎的選項(xiàng)?有沒有毫無(wú)價(jià)值的額外步驟?要注重約減少API的可視面積。

10.保持可移植性

不要讓系統(tǒng)概念泄漏到API。整潔有目的地抽象:這個(gè)API可以運(yùn)行在任何操作系統(tǒng)上。API必須能夠隱藏實(shí)現(xiàn),但要注意第4條規(guī)則,以及要使用自然抽象。

歡迎大家說說自己的看法。

 英文原文:Ten Rules for Good API Design
 

責(zé)任編輯:王雪燕 來(lái)源: 碼農(nóng)網(wǎng)
相關(guān)推薦

2015-09-23 17:12:18

API設(shè)計(jì)原則

2020-06-09 07:00:00

面向?qū)ο?/a>編程編程原則

2011-09-15 13:05:26

2021-02-05 10:24:48

電腦維修系統(tǒng)備份

2012-03-15 11:15:13

Java設(shè)計(jì)模式

2009-04-16 13:32:07

Nehalemintel服務(wù)器

2012-03-07 10:40:19

Java設(shè)計(jì)模式

2012-03-05 13:58:34

設(shè)計(jì)模式里氏置換

2012-03-07 11:03:13

Java設(shè)計(jì)模式

2010-06-30 10:16:56

UML建模

2011-07-29 17:36:25

程序員

2024-06-11 08:00:00

2011-09-07 09:21:01

設(shè)計(jì)模式

2012-03-08 10:57:00

Java設(shè)計(jì)模式

2023-07-11 14:41:04

2012-03-12 16:10:26

Java設(shè)計(jì)模式

2011-07-19 18:13:15

高效數(shù)據(jù)庫(kù)

2020-09-18 11:25:43

智能

2010-09-09 13:54:06

DIV CSS

2009-04-15 09:07:00

服務(wù)器選購(gòu)服務(wù)器選型Nehalem
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)