Effective Java讀書筆記--第7章 方法

個人讀書筆記熄诡,部分沒讀懂的知識點(diǎn)可能會簡單概括或缺失,以后反復(fù)閱讀后再完善凰浮。

第7章 方法

第38條: 檢查參數(shù)的有效性

非公有的方法通常應(yīng)該使用斷言檢查它們的參數(shù)袜茧。

    private static void sort(long a[], int offset, int length) {
        assert a != null;
        assert offset >=0&& offset<=a.length;
        assert length >= 0 && length <= a.length - offset;
    }

斷言失敗將會拋出AssertionError。

第39條: 必要時進(jìn)行保護(hù)性拷貝

保護(hù)性拷貝(defensive copy):

public Period(Date start, Date end) {
        /*if (start.compareTo(end) > 0) {
            throw new IllegalArgumentException(start + "after" + end);
        }
        this.start=start;
        this.end=end;*/
        //Date本身可變纳鼎,所以上訴寫法很容易違反約束條件裳凸。
        this.start = new Date(start.getTime());
        this.end = new Date(end.getTime());
        if (this.start.compareTo(this.end) > 0) {
            throw new IllegalArgumentException(start + "after" + end);
        }
    }

保護(hù)性拷貝是在檢查參數(shù)的有效性之前進(jìn)行的,并且有效性檢查是針對拷貝之后的對象逗宁。

第40條: 謹(jǐn)慎設(shè)計方法簽名

謹(jǐn)慎選擇方法的名稱
遵循標(biāo)準(zhǔn)的命名習(xí)慣(第56條)

不要過于追求提供便利的方法
一項(xiàng)操作經(jīng)常用到時才考慮為它提供快捷方式梦湘。

避免過長的參數(shù)列表

縮短參數(shù)列表的方法:
1、把方法分解成多個方法哼拔。
2禁灼、創(chuàng)建輔助類。
3僻孝、從對象構(gòu)建到方法調(diào)用都采用Builder模式守谓。

第41條: 慎用重載

不要導(dǎo)出兩個具有相同參數(shù)數(shù)目的重載方法斋荞。

Java出了自動裝箱和泛型后荞雏,重載的使用就需要更加謹(jǐn)慎了。
例子:

public class SetList {
    public static void main(String[] args) {
        Set<Integer> set = new TreeSet<>();
        List<Integer> list = new ArrayList<>();
        for (int i = -3; i < 3; i++) {
            set.add(i);
            list.add(i);
        }
        for (int i = 0; i < 3; i++) {
            set.remove(i);
            //這里i被自動裝箱到Integer中。程序不會從集合中去除正值
            //列表去除的是從哪個位置開始
            //list.remove( i);
            list.remove((Integer)i);
        }
        System.out.println(set + " " + list);
    }
}

第42條: 慎用可變參數(shù)

在重視性能的情況下凤优,聲明該方法的5個重載悦陋。當(dāng)參數(shù)的數(shù)目超過3個時,就使用一個可變參數(shù)方法筑辨。

public Foo() {}
public Foo(int a1) {}
public Foo(int a1, int a2) {}
public Foo(int a1, int a2, int a3) {}
public Foo(int a1, int a2, int a3, int... rest) {}

第43條: 返回零長度的數(shù)組或集合俺驶,而不是null

第44條: 為所有導(dǎo)出的API元素編寫文檔注釋

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市棍辕,隨后出現(xiàn)的幾起案子暮现,更是在濱河造成了極大的恐慌,老刑警劉巖楚昭,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異抚太,居然都是意外死亡谨究,警方通過查閱死者的電腦和手機(jī)囊扳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進(jìn)店門棚蓄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來溶推,“玉大人,你說我怎么就攤上這事帅霜〈冶常” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵身冀,是天一觀的道長钝尸。 經(jīng)常有香客問我,道長搂根,這世上最難降的妖魔是什么珍促? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮剩愧,結(jié)果婚禮上猪叙,老公的妹妹穿的比我還像新娘。我一直安慰自己仁卷,他們只是感情好穴翩,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锦积,像睡著了一般芒帕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上丰介,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天背蟆,我揣著相機(jī)與錄音鉴分,去河邊找鬼。 笑死带膀,一個胖子當(dāng)著我的面吹牛志珍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播垛叨,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼碴裙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了点额?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤莺琳,失蹤者是張志新(化名)和其女友劉穎还棱,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惭等,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡珍手,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了辞做。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琳要。...
    茶點(diǎn)故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖秤茅,靈堂內(nèi)的尸體忽然破棺而出稚补,到底是詐尸還是另有隱情,我是刑警寧澤框喳,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布课幕,位于F島的核電站,受9級特大地震影響五垮,放射性物質(zhì)發(fā)生泄漏乍惊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一放仗、第九天 我趴在偏房一處隱蔽的房頂上張望润绎。 院中可真熱鬧,春花似錦诞挨、人聲如沸莉撇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽稼钩。三九已至,卻和暖如春达罗,著一層夾襖步出監(jiān)牢的瞬間坝撑,已是汗流浹背静秆。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留巡李,地道東北人抚笔。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像侨拦,于是被迫代替她去往敵國和親殊橙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 38、檢查參數(shù)的有效性 絕大多數(shù)方法和構(gòu)造器對于傳遞給它們的參數(shù)值都會有限制季研。如敞葛,對象引用不能為null,數(shù)組索引...
    Alent閱讀 421評論 0 1
  • 本章討論方法(構(gòu)造方法与涡、普通方法)設(shè)計的幾個方面: 如何處理參數(shù)和返回值如何設(shè)計方法簽名如何為方法編寫文檔 第38...
    wangcanfeng閱讀 356評論 0 0
  • 本文大多數(shù)內(nèi)容適用于構(gòu)造器惹谐,也適用于普通方法,焦點(diǎn)集中在可用性驼卖、健壯性和靈活性上氨肌。 1.檢查參數(shù)的有效性 一個原則...
    666真666閱讀 236評論 0 3
  • 第二章:創(chuàng)建和銷毀對象 第7條:避免使用終結(jié)方法 final、finally酌畜、finalize的區(qū)別: 第三章對所...
    48892085f47c閱讀 466評論 0 2
  • 差八分鐘就十點(diǎn)了怎囚,我仍然躺在床上,無聊的看著天花板桥胞,床很硬桩了,所以我不得不把被子一半蓋著一半鋪在身下。無所事事已經(jīng)將...
    Yitazula閱讀 169評論 0 1