作用
有助于設(shè)計(jì)易于學(xué)習(xí)和使用的API。
如何做——謹(jǐn)慎地選擇方法的名稱
1.選擇易于理解的,并且與同一個(gè)包中的其他名稱風(fēng)格一致的名稱。
2.選擇與大眾認(rèn)可的名稱相一致的名稱。
如何做——不要過于追求提供便利的方法
每個(gè)方法都應(yīng)該盡其所能。
方法太多會(huì)使類難以學(xué)習(xí)、使用、文檔化、測(cè)試和維護(hù)。
只有當(dāng)一項(xiàng)操作被經(jīng)常用到的時(shí)候,才考慮為它提供快捷方法。
如果不能肯定,還是不提供快捷方法為好。
如何做——避免過長的參數(shù)列表
目標(biāo)是四個(gè)參數(shù)以內(nèi)。
相同類型的長參數(shù)序列格外有害。
避免過長的參數(shù)列表——把方法分解成多個(gè)方法,每個(gè)方法只需要這些參數(shù)的一個(gè)子集
注意提升分解出的多個(gè)方法的正交性。
避免過長的參數(shù)列表——?jiǎng)?chuàng)建輔助類(helper class),用來保存參數(shù)的分組
如果一個(gè)頻繁出現(xiàn)的參數(shù)序列可以被看作是代表了某個(gè)獨(dú)特的實(shí)體,建議使用這種方法。
避免過長的參數(shù)列表——從對(duì)象構(gòu)建到方法調(diào)用都采用Builder模式
如果方法帶有多個(gè)參數(shù),尤其是當(dāng)它們中有些是可選的時(shí)候,最好定義一個(gè)對(duì)象來表示所有參數(shù),并允許客戶端在這個(gè)對(duì)象上進(jìn)行多次“setter”調(diào)用,每次調(diào)用都設(shè)置一個(gè)參數(shù),或者設(shè)置一個(gè)較小的相關(guān)的集合。
一旦設(shè)置了需要的參數(shù),客戶端就調(diào)用對(duì)象的“執(zhí)行(execute)”方法,它對(duì)參數(shù)進(jìn)行最終的有效性檢查,并執(zhí)行實(shí)際的計(jì)算。
其他建議
優(yōu)先使用接口而不是類定義參數(shù)類型。
對(duì)于boolean參數(shù),要優(yōu)先使用兩個(gè)元素的枚舉類型。

Thermometer.newInstance(TemperatureScala.CELSIUS)比Thermometer.newInstance(true)更有用,而且支持在未來對(duì)TemperatureScala對(duì)進(jìn)行擴(kuò)展。
枚舉是可以有方法的,有時(shí)候這個(gè)特性也非常有用。