提示五十七:將局部變量的作用域最小化。 在局部變量首次使用的地方進(jìn)行聲明猩谊。過早聲明導(dǎo)致作用域過大千劈,除可讀性查之外,被意外改動(dòng)的幾率也大牌捷。 幾乎每個(gè)局部變量聲明都應(yīng)該包含一個(gè)初...
第56條:為所有導(dǎo)出的API元素寫文檔注釋墙牌。 為了正確的編寫API文檔,必須在每個(gè)被導(dǎo)出的類暗甥、接口喜滨、構(gòu)造器、方法和域聲明之前增加一個(gè)文檔注釋撤防。 同一個(gè)類或接口中的兩個(gè)成員或者...
第55條:謹(jǐn)慎返回optional虽风。 集合、映射即碗、Stream焰情、數(shù)組、Optional都不應(yīng)該包裝在Optional中剥懒。 如果無法返回結(jié)果并且當(dāng)沒有返回結(jié)果時(shí)客戶端必須執(zhí)行特...
提示五十二:慎用重載耕蝉。 重載調(diào)用哪個(gè)方法是在編譯時(shí)做出的決定,重寫方法是在運(yùn)行時(shí)決定調(diào)用哪個(gè)方法夜只,所以編譯時(shí)的類型不會(huì)影響最終調(diào)用哪個(gè)方法垒在。 使用重載機(jī)制比較安全而保守的策略...
提示五十一:謹(jǐn)慎設(shè)計(jì)方法簽名。 謹(jǐn)慎選擇方法名扔亥。 不要過于追求提供便利的方法场躯。 避免過長的參數(shù)列表。有三種方法可以縮短參數(shù)列表旅挤。分解方法踢关。創(chuàng)建輔助類保存參數(shù)。從對象的構(gòu)建到方...
提示五十:必要時(shí)進(jìn)行保護(hù)性拷貝粘茄。 愉快使用 Java 的原因签舞,它是一種安全的語言。 這意味著在缺少本地方法的情況下柒瓣,它不受緩沖區(qū)溢出儒搭,數(shù)組溢出,野指針以及其他困擾 C 和 C...
提示四十九:檢查參數(shù)的有效性芙贫。 方法的參數(shù)限制师妙,應(yīng)該在文檔中指明,并且在方法體的開頭處檢查參數(shù)屹培,以強(qiáng)制施加這些限制默穴。 如果沒有進(jìn)行參數(shù)限制,最嚴(yán)重的會(huì)導(dǎo)致改變破壞了對象的狀態(tài)...
提示四十八:謹(jǐn)慎使用Stream并行褪秀。 Java8 Stream中可以通過parallel方法非常簡單的來實(shí)現(xiàn)并行化蓄诽,但是編寫正確的并發(fā)程序還是很困難,需要我們仔細(xì)考慮媒吗。 源...
提示四十七:Stream要優(yōu)先用Collection作為返回類型仑氛。 Stream雖然有一個(gè)符合Iterable接口(Iterator<T> iterator();)可以用, ...
提示四十六:優(yōu)先使用streams中無副作用函數(shù)。 這一章中作者先用一個(gè)反面案例說明了stream中的一個(gè)壞味道:只使用了foreach偽裝成流代碼闸英,但本質(zhì)還是普通的代碼锯岖,使...