-
簡(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)度
不要超過4個(gè)單詞,這樣會(huì)大大降低可讀性,雖然作用顯得更明確,但是太過啰嗦
反例:AbstractBeanFactoryBasedTargetSourceCreator -
參數(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)) -
返回參數(shù)
單個(gè)對(duì)象沒有找到返回null或者拋出異常由調(diào)用者來處理羹应;
列表不能返回null,如何沒有需要返回的數(shù)據(jù)就返回一個(gè)空集合揽碘,防止調(diào)用處未能進(jìn)行空處理而導(dǎo)致異常的發(fā)生。 -
命名格式
(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