-
簡(jiǎn)單明確
單個(gè)單詞簡(jiǎn)單明確
約束規(guī)則:在創(chuàng)建方法時(shí),需要遵守一定的規(guī)則,方便調(diào)用者理解,相互關(guān)聯(lián)的方法可以考慮保留一致的前綴或后綴//例: size(); remove(); removeAll() //反例: countObservers(); deleteObserver(Observer); deleteObservers();//例: execute(String); executeBatch(); executeQuery(String); executeUpdate(String); -
限制長(zhǎng)度
不要超過(guò)4個(gè)單詞,這樣會(huì)大大降低可讀性,雖然作用顯得更明確,但是太過(guò)啰嗦
反例:AbstractBeanFactoryBasedTargetSourceCreator -
參數(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)) -
返回參數(shù)
單個(gè)對(duì)象沒(méi)有找到返回null或者拋出異常由調(diào)用者來(lái)處理;
列表不能返回null,如何沒(méi)有需要返回的數(shù)據(jù)就返回一個(gè)空集合,防止調(diào)用處未能進(jìn)行空處理而導(dǎo)致異常的發(fā)生。 -
命名格式
(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