不要返回null之EmptyFactory

2021-09-22 06:13:35 字數 2066 閱讀 6875

有很多書上都提出過乙個建議:不要返回

null

物件。

比如下面的

getusers

方法:

public

class

user

public

string name

}

public

list

getusers()

如果其他方法由

getusersof***

,getusersby***

之類的方法,那麼就有大量

list

result = new

list

();

考慮到這一點,可以將

new list()

封裝到方法中,這就是」工廠

」模式了.

因為可能不是

list,

也許是stack

更或者是

observablecollection

所以配合泛型,**如下:

public

static

class

emptyfactory

}

使用如下:

list

emptylist = new

list

();

stack

emptystack = new

stack

();

observablecollection

emptyobserable = new

observablecollection

();

emptylist = emptyfactory.empty

>();

emptystack = emptyfactory.empty

>();

emptyobserable = emptyfactory.empty

>();

雖然這樣寫可以滿足要求,但是可以發現基本沒什麼好處,寫

emptyfactory

還不如new 

來得快。

不過如果能夠快取物件的話,也許

emptyfactory

有作用。

考慮到這一點,為

emptyfactory

增加快取機制的**如下,使用

dictionary

來實現

public
static

class emptyfactory

else
}
}
測試**如下:   

不過這種方法有乙個缺陷,對於值型別而言,需要裝箱

其根本原因是因為emptyfactory不知道t是什麼,如果emptyfactory知道t的話,那麼就可以使用dictionary的快取了。

解決這個問題的思路是將emptyfactory變成泛型類:

**如下:

public
static

class emptyfactorywhere t : ienumerable, new()

else
}
}
使用的時候,只需要

當然也可以emptyfactory>.empty();

為什麼不用enumersble.empty方法呢?

因為enumerable.empty返回的是ienumerable物件。

不要返回null之EmptyFactory

有很多書上都提出過乙個建議 不要返回 null 物件。比如下面的 getusers 方法 public class user public string name public list getusers 如果其他方法由 getusersof getusersby 之類的方法,那麼就有大量 list...

springboot json返回null問題處理

在開發過程中,我們需要統一返回前端json格式的資料,但有些介面的返回值存在 null或者 這種沒有意義的字段。以上不僅影響理解,還浪費頻寬,這時我們可以統一做一下處理 不返回空欄位,或者把null轉成 spring 內建的json處理框架是jackson。我們可以對它配置一下達到目的,具體 如下....

AfxGetMainWnd返回NULL也是可能的

afxgetmainwnd返回null也是有可能的。因為 afxwin inline cwnd afxapi afxgetmainwnd 而cwnd cwinthread getmainwnd cwnd cwinthread getmainwnd 而m pmainwnd有時候的值如果還沒有被設定,a...