Effective Java 筆記(八)

來源:互聯網
上載者:User

相關讀書筆記列表

NO.23 檢查參數的有效性

非公有的方法我們應該用斷言的方法來檢查它的參數,而不是使用通常大家所熟悉的檢查語句來檢測。如果我們使用的開發平台是JDK1.4或者更進階的平台,我們可以使用assert結構;否則我們應該使用一種臨時的斷言機制。

有些參數在使用過程中是先儲存起來,然後在使用的時候再進行調用,就必須做好檢查工作,否則程式可能會拋出一些異常讓你摸不著頭腦(如常見的null 指標異常),也不能馬上定位問題的所在位置,建構函式正是這種類型的一種體現,所以我們通常對建構函式參數的有效性檢查是非常仔細的。

總之,當編寫一個方法或者建構函式的時候,應該考慮對應它的參數有哪些限制,並且要把這些限制寫到文檔中,在方法體的起始處,通過顯示的檢查來實施這些限制。

NO.24 需要時使用保護性拷貝

假設類的使用者會盡一切手段來破壞這個類的約束條件,在這樣的前提下,你必須保護性地設計程式。面對客戶的不良行為時仍然能保持健壯性的類。
對於一個非可變類,可以考慮對其建構函式的可變參數採用保護性拷貝,如
public period(Date start, Date end){<br /> this.start = new Date(start.getTime());<br /> this.end = new Date(start.getTime());<br /> // 接著做其他邏輯(保護性拷貝要在其他邏輯之前進行,並且有效性檢查是針對拷貝後的對象,而不是原始對象)<br />}
對擷取參數的get方法也要採用clone的方式返回,如:
public Date getStart(){<br /> return (Date)start.clone();<br />}
記住非零長度的數組總是可變的,盡量使用非可變的對象作為內部組件,這樣就不必關心保護性拷貝問題.

NO.25 謹慎設計方法的原型

1、謹慎選擇方法的名字

     ① 選擇易於理解的,並且與同一個包中的其他名字風格一致;

     ② 選擇與福士認可的名字一致;

2、不要過於追求提供便利的方法。過多的方法會增加類的學習和使用成本,只有當一個操作被用得非常頻繁的時候,才考慮為他提供一個快加的方法。

3、避免過長的參數列表。太長的參數不便於使用者使用,尤其是參數類型相同的時候,很容易產生參數傳遞錯誤的問題。避免此類錯誤的方法:

     ① 可以把一個方法分解成多個方法;

     ② 可以建立一個輔助類(helper class)。將參數組織成一個類作為參數傳入;

4、對於型別參數,優先使用介面,而不是類。如參數為Map的時候,該方法可以接收Hashtable、HashMap、TreeMap等類型的參數。

5、謹慎使用函數對象

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.