Android的API設(shè)計(jì)

  1. 簡(jiǎn)單明確
    單個(gè)單詞簡(jiǎn)單明確
    //例:
     size();
     remove();
     removeAll()
    
    //反例:
     countObservers();
     deleteObserver(Observer);
     deleteObservers();
    
    約束規(guī)則:在創(chuàng)建方法時(shí)跳芳,需要遵守一定的規(guī)則照激,方便調(diào)用者理解刺桃,相互關(guān)聯(lián)的方法可以考慮保留一致的前綴或后綴
    //例:
     execute(String);
     executeBatch();
     executeQuery(String);
     executeUpdate(String);
    
  2. 限制長(zhǎng)度
    不要超過4個(gè)單詞,這樣會(huì)大大降低可讀性,雖然作用顯得更明確,但是太過啰嗦
    反例:AbstractBeanFactoryBasedTargetSourceCreator
  3. 參數(shù)限制
    方法里有過多參數(shù)往往讓人不能明確區(qū)分其作用蛇数,特別在重載方法時(shí)鹦倚,多個(gè)方法參數(shù)五花八門躺酒,會(huì)讓人不知所措押蚤,可以考慮重新優(yōu)化代碼結(jié)構(gòu)或者重新定義一個(gè)model
    反例:regionMatches(boolean, int, String, int, int)
    在遇到多個(gè)參數(shù)的情況下,需要遵守一定原則:數(shù)組在前(如:copyOf(T[], int))
  4. 返回參數(shù)
    單個(gè)對(duì)象沒有找到返回null或者拋出異常由調(diào)用者來處理羹应;
    列表不能返回null,如何沒有需要返回的數(shù)據(jù)就返回一個(gè)空集合揽碘,防止調(diào)用處未能進(jìn)行空處理而導(dǎo)致異常的發(fā)生。
  5. 命名格式
    (1)回調(diào)(onSomethingDone) :由其他類來調(diào)用本類中的方法量愧,在Listener和Callback中是比較常見的
    ? 例:onTitleChanged
    (2)主動(dòng)調(diào)用(doSomething):一般是比較常見的方法钾菊,多數(shù)由本類中其他方法來調(diào)用,但是許多開發(fā)者利用或創(chuàng)建時(shí)卻很隨意偎肃,可用在優(yōu)化代碼顯示煞烫,比價(jià)常見的命名有:reset,refresh,init
    ? 例:invalidateOptionsMenu

總結(jié)

API的設(shè)計(jì)過程很多時(shí)候不能一撮而就,需要慢慢積累和進(jìn)化累颂,一個(gè)功能性的API一旦設(shè)計(jì)出來滞详,意味著在一定時(shí)間內(nèi)是相對(duì)穩(wěn)定的,使用者能夠放心的去調(diào)用紊馏,所以也需要一定的前瞻性料饥,特別是對(duì)于Android開發(fā)著來說,其系統(tǒng)版本的高速迭代朱监,可能會(huì)或多或少的影響到自己設(shè)計(jì)的程序岸啡;每個(gè)API接口應(yīng)該只專注一件事,并做好(如果它很難命名赫编,那么這或許是個(gè)不好的征兆巡蘸,好的名稱可以驅(qū)動(dòng)開發(fā)、并且只需拆分與合并模塊即可)擂送;遵守最小驚訝原則悦荒,用戶API只需根據(jù)需求來設(shè)計(jì)即可,不需要刻意去設(shè)計(jì)一下復(fù)雜無用的API嘹吨。

Thanks

http://www.csdn.net/article/2013-04-10/2814835-how-design-good-regular-api
http://blog.csdn.net/hdy007/article/details/1508834
http://www.codeceo.com/article/google-java-good-api.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末搬味,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蟀拷,更是在濱河造成了極大的恐慌碰纬,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件问芬,死亡現(xiàn)場(chǎng)離奇詭異嘀趟,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)愈诚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人炕柔,你說我怎么就攤上這事酌泰。” “怎么了匕累?”我有些...
    開封第一講書人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵陵刹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我欢嘿,道長(zhǎng)衰琐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任炼蹦,我火速辦了婚禮羡宙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘掐隐。我一直安慰自己狗热,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開白布虑省。 她就那樣靜靜地躺著匿刮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪探颈。 梳的紋絲不亂的頭發(fā)上熟丸,一...
    開封第一講書人閱讀 52,785評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音伪节,去河邊找鬼光羞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛架馋,可吹牛的內(nèi)容都是我干的狞山。 我是一名探鬼主播,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼叉寂,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼萍启!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起屏鳍,我...
    開封第一講書人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤勘纯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后钓瞭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體驳遵,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年山涡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了堤结。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唆迁。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖竞穷,靈堂內(nèi)的尸體忽然破棺而出唐责,到底是詐尸還是另有隱情,我是刑警寧澤瘾带,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布鼠哥,位于F島的核電站,受9級(jí)特大地震影響看政,放射性物質(zhì)發(fā)生泄漏朴恳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一允蚣、第九天 我趴在偏房一處隱蔽的房頂上張望于颖。 院中可真熱鬧,春花似錦厉萝、人聲如沸恍飘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽章母。三九已至,卻和暖如春翩剪,著一層夾襖步出監(jiān)牢的瞬間乳怎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來泰國打工前弯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蚪缀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓恕出,卻偏偏與公主長(zhǎng)得像询枚,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子浙巫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法金蜀,類相關(guān)的語法,內(nèi)部類的語法的畴,繼承相關(guān)的語法渊抄,異常的語法,線程的語...
    子非魚_t_閱讀 31,667評(píng)論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理丧裁,服務(wù)發(fā)現(xiàn)护桦,斷路器,智...
    卡卡羅2017閱讀 134,716評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,332評(píng)論 25 707
  • 你說 你們的戀情還未穩(wěn)固 不想弄得人盡皆知 可是來之不易的愛情 讓你掩不住臉上的欣喜 別人見到便問起 ...
    清新寡欲閱讀 212評(píng)論 0 0
  • 有一種相遇贪染,止在遇過就好,我沒想過要上前打招呼催享。 我一直很不喜歡搬家抑进,大約是小時(shí)候跟著爸媽到處跑,住過很多地方睡陪,搬...
    一顆牙疼閱讀 218評(píng)論 0 1