高效Java第四十條建議:謹(jǐn)慎設(shè)計(jì)方法簽名

作用

有助于設(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è)特性也非常有用。

最后編輯于
?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 方法簽名由方法名稱和一個(gè)參數(shù)列表(方法的參數(shù)的順序和類型)組成,不包括返回值類型。 本條目是若干API設(shè)...
    HHJG閱讀 780評(píng)論 0 0
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,854評(píng)論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,711評(píng)論 19 139
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 12,537評(píng)論 6 13
  • 也許很多人會(huì)說感情怎么可以論價(jià)值呢,真正的感情都是無價(jià)的,怎么可以用“廉價(jià)”來形容它??墒嵌皇兰o(jì)的感情還不廉價(jià)...
    流箐c閱讀 1,248評(píng)論 0 43

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