1. 程式人生 > >類的基本設計技巧

類的基本設計技巧

1.一定要保證資料私有

保證資料私有不會破壞封裝性,有時候需要編寫一個get()方法或者set()方法對私有資料進行訪問或更改,要保持例項域的私有性,資料的表現形式可能會改變,但是它的使用方式卻不會經常發生變化。當資料保持私有的時候,它們的表示形式的變化不會對類的使用者產生影響,即使出現bug也容易檢測。

2.要對資料初始化

java不對區域性變數進行初始化,但是會對類的成員變數使用預設的構造方法進行初始化,即便如此,我們還是不能過度依賴預設建構函式,而是去顯式地初始化所有的資料。具體的初始化方式可以是在成員變數宣告時提供預設值,也可以使用建構函式設定預設值。

3.不要在類中使用過多的基本型別

例如,現在有兩個類,People類和Woman類,兩個類都有name,age等一系列屬性,如果拋去繼承關係不看,那麼我們在設計兩個類的時候,應該用Woman去代替People類中可以代替的部分,而不是在People類中再去宣告一邊name,age等屬性。這樣會使類更加容易理解並且易於修改。

4.不是所有的類都需要get(),set()方法

對於一旦初始化就不希望被訪問或者被更改的資料來說,不需要對他們設定get(),set()方法。例如僱員的僱傭日期沒有必要使用set()方法重新設定。

5.將職責過多的類進行分解

如果明明可以將一個非常複雜的類分解成多個簡簡單單的類,那麼就應該將其進行分解,當然我們也不不能走極端,把它分解成一百個類
下面是一個反面教材:

class People
{
	private int count;//統計人的個數
	private int age;//人的年齡
	public void beCompany(){}//人們互相陪伴彼此的行為
	public void playFootball(){}//人的踢足球行為
	public void playGames(){}//人的玩遊戲行為
}

這是一個看似很正常的類,但是如果細心一些我們就會發現,這個類中有的是至少兩個人才能具有的行為和屬性,有的卻是一個人一個個體就可以具有的屬性和行為,假如,我們把類設計成如下這樣:

class People
{
	private int count;
public void beCompany(){} } class Person { private int age; public void playFootball(){} public void playGames(){} }

顯然,我們把原來混亂的類分解成了條理層次分明的兩個簡單類,這樣邏輯更加清晰,使用起來也更加明瞭,換個角度來看,這居然是一種哲學問題

6.類名成員變數名和方法名要明確規範易懂

當我們在給類或者變數和方法起名字的時候,應該能明確反映它的含義,對於名詞變數來說,一般是首字母大寫,如變數Order,如果名詞前面有修飾詞,也應該首字母大寫,如RushOrder。對於方法來說,應該採用駝峰式命名,即方法名的動詞在名詞前,動詞首字母小寫,名詞首字母大寫,如getName()方法。切忌使用拼音或者一個字母作為類名或變數名方法名。

7.優先使用不可變的類

如果我們在多個執行緒中同時試圖更改一個物件,就會發生併發更改,結果是不可預料的;而如果類是不可變的,就可以安全地在多個執行緒間共享其物件。