偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

為什么“開發(fā)人員友好性”是API設(shè)計(jì)的核心

開發(fā) 前端
現(xiàn)今API在軟件開發(fā)領(lǐng)域中扮演的角色越來越重要。計(jì)算和開發(fā)領(lǐng)域的進(jìn)化在被不斷升級(jí)的抽象計(jì)算和高級(jí)語言主導(dǎo),但除此以外,也被開發(fā)平臺(tái)、庫、和架構(gòu)的發(fā)展所推動(dòng)。

Douglass C. Smith 教授在 2006 年 IEEE 的報(bào)告中指出:后者的進(jìn)程和發(fā)展將超越具體算法語言的發(fā)展。實(shí)際上是,開發(fā)人員也應(yīng)該注意到這一點(diǎn)了:開發(fā)過程中的阻礙從學(xué)習(xí)算法和數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換到了選擇,學(xué)習(xí)和使用層出不窮的 API 上。但是很多程序員沒有意識(shí)到 API 的優(yōu)劣所導(dǎo)致的區(qū)別,以及為此需要設(shè)計(jì)好的 API 所要付出的努力。

微軟在 API 設(shè)計(jì)上是很費(fèi)心血的,這種努力和專注始于上世紀(jì) 80 年代 Windows 的誕生。他們理解一個(gè)平臺(tái)的成功取決于這個(gè)平臺(tái)所能吸引和擁有的開發(fā)者(Steve Ballmer 的視頻 ”developers,developers,developers” )。 .Net 的***架構(gòu)師 Krzysztof Cwalina 出了一本專門《.NET 設(shè)計(jì)規(guī)范:約定、慣用法與模式》 指導(dǎo)開發(fā)人員。相似的,Sun(Oracle)也有相關(guān)的 Java SDK 的書籍。在一次采訪中,Sun 的前任***架構(gòu)師,Joshua Bloch (現(xiàn)任職 Google)洋洋灑灑地總結(jié)了 19 頁 Sun 在 API 設(shè)計(jì)上的理念。同樣的,SAP 雇傭了 Carnegie Mellon 大學(xué)的研究人員具體研發(fā)新的網(wǎng)絡(luò)服務(wù)接口(web services interfaces)。這些業(yè)內(nèi)大佬們的實(shí)例無不給了我們一個(gè)信號(hào),API 設(shè)計(jì)在推動(dòng)軟件使用和程序開發(fā)中的價(jià)值。

譯者注:本文通過學(xué)術(shù)統(tǒng)計(jì)報(bào)告理論上證實(shí) API 質(zhì)量的重要性,循序漸進(jìn)地例證:API 的優(yōu)劣如何評(píng)判,API 的改進(jìn)能多大程度地提高編程效率,以及為什么我們需要一個(gè)對(duì)開發(fā)人員友好(Developer-Friendly)的 API。然后概括例舉了優(yōu)質(zhì) API 的特性,以及如何在實(shí)際操作中實(shí)現(xiàn)這些特性。

我們的主張

如果說書籍是以封皮判斷,那么軟件平臺(tái)、服務(wù)、架構(gòu)和庫是由它們的 API 定義的。當(dāng)開發(fā)人員評(píng)價(jià)一個(gè) API 的時(shí)候,他們實(shí)際上是對(duì) API 所有的服務(wù)和包裹進(jìn)行評(píng)價(jià)。API 設(shè)計(jì)是很聰明的投資,你得到的回報(bào)是忠實(shí)的開發(fā)人員。

研發(fā)人員和機(jī)構(gòu)越來越意識(shí)到 API 質(zhì)量的好壞直接影響到自己代碼的質(zhì)量。雖然將他人代碼質(zhì)量的好壞視為 API 作者的責(zé)任有些奇怪,但 API 質(zhì)量影響到使用 API 代碼質(zhì)量的例子卻越來越多。盡管使用復(fù)制黏貼,樣板等類似的編程方法被視為是缺乏編程技能,但是即便是最出色的程序員(在使用 API 的時(shí)候)也無法避免使用這樣的編程方式除非自己用代碼重新包裝 API。不難看出每個(gè)研發(fā)人員用代碼包裝 API 都是在填補(bǔ) API 天生的不足之處。因?yàn)?API 一旦出爐將被反復(fù)使用,所以越來越多的研發(fā)人員希望 API 的作者能填補(bǔ) API 的天生不足。在有眾多的開放式網(wǎng)絡(luò)服務(wù)和免費(fèi)開源組件可以選擇的時(shí)代,研發(fā)人員默默的使用有天生不足 API 的日子已經(jīng)一去不復(fù)返了。

為使 API 更加易學(xué),易用,易除錯(cuò)作出的任何努力都可以直接提高使用 API 的程序員的效率。讓我們回頭看看開篇的主題:當(dāng)今,研發(fā)人員將大量的時(shí)間花費(fèi)在學(xué)習(xí) API,使用 API 和代碼調(diào)試上,這些活動(dòng)都是在通過包裹在多個(gè)復(fù)雜的 API 來實(shí)現(xiàn)一個(gè)業(yè)務(wù)邏輯。所以,更好的 API 會(huì)使研發(fā)人員有更高的效率。很多學(xué)術(shù)數(shù)據(jù)可以證實(shí) API 的設(shè)計(jì)質(zhì)量直接聯(lián)系到編程的實(shí)際效率。2007的一份研究報(bào)道的數(shù)據(jù)表明 API 上哪怕是細(xì)微的變化,例如使用構(gòu)造函數(shù)(constructor)取代工廠方法(factory methods)也可以大幅度地提高程序員的編程效率。他們的數(shù)據(jù)顯示,使用 constructor,不管程序員的經(jīng)驗(yàn)、技術(shù)的區(qū)別,他們大多能在同樣短的時(shí)間內(nèi)完成;而使用 factory methods,程序員們所需要的時(shí)間可以相差 10 倍。也就是說 factory methods 的 API 很打程度上取決于使用者。而取決于個(gè)人的工具不是一個(gè)好工具。相似的報(bào)道顯示了編程效率可以相差 10 倍如果一個(gè)方法被放到不同的 class 里面。

很多時(shí)候在 API 軟件不能很好地被使用的情況下,程序員會(huì)被指責(zé)太自我,或者恐懼新事物,不確定,疑惑(FUD)。但是實(shí)際情況是,API 的質(zhì)量不夠好才是主導(dǎo)因素。常見的問題是 API 的文檔不夠清晰明了;API 的方法太情景鎖定(specific to scenario);API 有太多 Dependencies,與其使用它,還不如自己寫來地快。我們可以得出結(jié)論,只要 API 的質(zhì)量不得到提高,軟件的采用率也就不會(huì)上升。

 

為什么“開發(fā)人員友好性”是 API 設(shè)計(jì)的核心

 

什么是好的 API

什么是好的 API?什么是程序員需要的?API 需要什么質(zhì)量去吸引程序員?我們的設(shè)計(jì)努力應(yīng)該付出在哪里?

***點(diǎn):intuitive: 直觀

什么是直觀的?具體又如何實(shí)現(xiàn)?Wikipedia 上解釋直觀(intuitive)“不需要刻意努力的理解”(understanding without apparent effort),Merriam Webster 的解釋是“不需要刻意有理推導(dǎo)來獲取知識(shí)或者認(rèn)識(shí)的力量”(“the power or faculty of attaining to direct knowledge or cognition without evident rational thought and inference”)。細(xì)說開去,我們可以用一個(gè)博士學(xué)位來討論人類的認(rèn)知過程,我們就不展開了。就 API 設(shè)計(jì)來講,intuitive design 就是站在使用者的角度,保持邏輯一致。

第二點(diǎn),simple: 簡(jiǎn)潔

這個(gè)會(huì)在以后的博文里面具體展開。這里我們就說一個(gè)綱領(lǐng):需要平衡復(fù)雜的功能和簡(jiǎn)單的用戶界面。

第三點(diǎn)是 easy to understand, remember, and use 易于理解、記憶和使用

這是任何專家都會(huì)給出的建議,但是實(shí)際操作卻很難自始至終做到這點(diǎn)。盡量使用程序員們熟悉的邏輯和概念,用他們的語言(邏輯和語法)和他們對(duì)話,盡量減少引進(jìn)新的概念和規(guī)則。尊重他們熟悉的命名方式,這樣可以幫助他們記憶。這些減少刻意學(xué)習(xí)和使用的設(shè)計(jì)理念在 API 設(shè)計(jì)中很重要,因?yàn)樗苯記Q定了開發(fā)人員適應(yīng) API 的速度和程度。

簡(jiǎn)單適用:程序員沒有太多時(shí)間去評(píng)估一個(gè) API 的好壞去決定是否使用。大多數(shù)時(shí)候,我們就試用兩個(gè)方法,看看好不好用。API 設(shè)計(jì)應(yīng)該鼓勵(lì)試用:核心情景必須能被簡(jiǎn)單采用,而且要有實(shí)例(sample code)來幫助采用。其二,API 要安全(safe)。這個(gè)包括兩點(diǎn),一是本身那個(gè)情景(scenario)要穩(wěn)定。其次,如果出現(xiàn)問題,錯(cuò)誤報(bào)告要全面、明確。

***一點(diǎn):documented 文檔備案。

拿到新的 API,我們程序員會(huì)直接動(dòng)手,而不是讀說明書。如果沒有人讀,APIs 到底需要文檔嗎?動(dòng)手是淺嘗輒止,我們叫了個(gè)方法,然后它做了意料之中的事情,至于它有可能會(huì)出現(xiàn)什么問題,然后有什么解決方法,或者同樣的事情,是否有更加有效的方法完成,一行程序是不能了解的。這個(gè)就是為什么我們需要文檔,全方位、多角度的解釋(Redundancy),不是簡(jiǎn)單的重復(fù)同一種內(nèi)容(repetition)。

特定功能性 API (purpose-made APIs)

好的 API 是設(shè)計(jì)出來的。以上所列舉的 API 的特性和優(yōu)點(diǎn)不會(huì)自然流露在程序里面,把一組能被重復(fù)使用的獨(dú)立函數(shù)放在一起不是一個(gè)好的 API。軟件與軟件之間的界面會(huì)在獨(dú)立板塊的結(jié)界出現(xiàn),但是這些界面如果不是結(jié)構(gòu)上設(shè)計(jì)好的,他們放在一起不會(huì)是好的 API。這個(gè)不是因?yàn)槌绦騿T的個(gè)人技術(shù)好壞,而是實(shí)際操作過程中容易迷失全景的概念。并且這樣生成的 API 很難維護(hù),每次更新或者改錯(cuò)都會(huì)引出新的問題。Erich Gamma 說過“好的 API 不會(huì)是偶然的發(fā)生,而是刻意的出現(xiàn)。他們是一筆巨大的投資”。API 設(shè)計(jì)應(yīng)該作為一個(gè)單獨(dú)任務(wù),從實(shí)際寫程序的過程中獨(dú)立出來。設(shè)計(jì)出來的 APIs 是 purpose-made APIs. 他們應(yīng)該包括文檔備案(documentation),實(shí)例(code samples),教程(tutorials)和單元測(cè)試(unit tests)。他們鼓勵(lì)不同的采用方式,支持快速有效的用戶端,如此才能與時(shí)俱進(jìn)。

***,正如 Joshua Bloch 所說:“公共 API,就像鉆石,恒久美,永流傳。你只有一個(gè)機(jī)會(huì)去把她做好,請(qǐng)竭盡全力。”

(“Public APIs, like diamonds, are forever. You have one chance to get it right so give it your best”.)

原文:http://blog.jobbole.com/10197/

【編輯推薦】

  1. 程序員該如何做到API兼容
  2. API調(diào)用太麻煩 eBay推出Web查詢語言
  3. 有道翻譯正式對(duì)外免費(fèi)開放翻譯API
  4. 推薦五個(gè)實(shí)用的地理位置API
  5. API設(shè)計(jì)新思維:用流暢接口構(gòu)造內(nèi)部DSL
責(zé)任編輯:陳貽新 來源: 伯樂在線
相關(guān)推薦

2022-12-19 07:33:49

開發(fā)人員谷歌制度

2011-05-05 17:57:18

軟件開發(fā)

2020-07-23 08:21:25

PHP開發(fā)人員MVC

2022-03-03 23:30:27

TypeScrip開發(fā)前端

2020-06-22 07:18:21

Java語言開發(fā)

2018-07-09 14:05:16

編程語言PythonPipenv

2021-04-18 18:12:07

Linux開發(fā)操作系統(tǒng)

2021-11-01 22:19:29

開發(fā)測(cè)試代碼

2011-06-20 08:43:15

Windows 8開發(fā)人員

2019-09-03 10:12:15

開發(fā)者技能工具

2023-09-04 08:20:00

2021-01-30 10:51:07

Python編程語言開發(fā)

2022-11-02 14:43:29

2015-11-23 10:47:27

2014-09-12 10:28:28

技術(shù)開發(fā)程序員

2023-10-13 06:54:58

2022-10-25 15:51:40

2023-01-11 12:14:50

NeoVimVim開發(fā)

2018-10-12 22:50:20

機(jī)器學(xué)習(xí)API人工智能

2023-12-25 07:58:46

Python開發(fā).NET
點(diǎn)贊
收藏

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