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)度
    不要超過(guò)4個(gè)單詞,這樣會(huì)大大降低可讀性,雖然作用顯得更明確,但是太過(guò)啰嗦
    反例:AbstractBeanFactoryBasedTargetSourceCreator
  3. 參數(shù)限制
    方法里有過(guò)多參數(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ì)象沒(méi)有找到返回null或者拋出異常由調(diào)用者來(lái)處理;
    列表不能返回null,如何沒(méi)有需要返回的數(shù)據(jù)就返回一個(gè)空集合,防止調(diào)用處未能進(jìn)行空處理而導(dǎo)致異常的發(fā)生。
  5. 命名格式
    (1)回調(diào)(onSomethingDone) :由其他類來(lái)調(diào)用本類中的方法,在Listener和Callback中是比較常見的
    ? 例:onTitleChanged
    (2)主動(dòng)調(diào)用(doSomething):一般是比較常見的方法,多數(shù)由本類中其他方法來(lái)調(diào)用,但是許多開發(fā)者利用或創(chuàng)建時(shí)卻很隨意,可用在優(yōu)化代碼顯示,比價(jià)常見的命名有:reset,refresh,init
    ? 例:invalidateOptionsMenu

總結(jié)

API的設(shè)計(jì)過(guò)程很多時(shí)候不能一撮而就,需要慢慢積累和進(jìn)化,一個(gè)功能性的API一旦設(shè)計(jì)出來(lái),意味著在一定時(shí)間內(nèi)是相對(duì)穩(wěn)定的,使用者能夠放心的去調(diào)用,所以也需要一定的前瞻性,特別是對(duì)于Android開發(fā)著來(lái)說(shuō),其系統(tǒng)版本的高速迭代,可能會(huì)或多或少的影響到自己設(shè)計(jì)的程序;每個(gè)API接口應(yīng)該只專注一件事,并做好(如果它很難命名,那么這或許是個(gè)不好的征兆,好的名稱可以驅(qū)動(dòng)開發(fā)、并且只需拆分與合并模塊即可);遵守最小驚訝原則,用戶API只需根據(jù)需求來(lái)設(shè)計(jì)即可,不需要刻意去設(shè)計(jì)一下復(fù)雜無(wú)用的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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容