2012-02-09 48 views
0
public static FirstObjectType GetObject(SecondObjectType secondobjectType) 
{ 
     do something 
} 

我應該在哪裏放這個功能?我應該在代碼可讀性,習俗和傳統方面將它放在SecondObjectType類或FirstObjectType類中嗎?該函數是否應該包含在您的經驗中的返回類或參數類中?把功能放在合適的類別

感謝您的回答。

+0

GetObject()有什麼意義?你在實施工廠模式嗎? – jrummell 2012-02-09 16:17:48

回答

2

我通常會將該方法放在與返回類型相同的類中方法。

如:

public static FirstObjectType GetObject(SecondObjectType secondobjectType) 
{ 
     do something 
} 

會走在FirstObjectType類。

或者,您可以使用工廠模式,並有一個工廠獲取您需要的對象。這可能會讓你的代碼類似於下面的代碼:

FirstObjectTypeFactory.GetObject(SecondObjectType secondObjectType) 

然後你總是知道哪個工廠根據它的返回類型來獲取對象。

+0

同意。通常當你想要一個對象A時,A是你看起來的第一個地方。 – Bort 2012-02-09 16:11:21

+0

我不明白在FirstObjectType上具有靜態GetObject的意義。爲什麼不使用構造函數? – cadrell0 2012-02-09 16:13:49

+0

如果使用構造函數,並且第一個對象不能從第二個對象構造/找到,那麼如果找不到對象,則不能返回null - 相反,您只是有一個空類。如果什麼都不應該返回而不是空的類的實例,我寧願返回null。它更容易檢查,如果另一個開發人員正在使用該類,他們將不得不知道要在空類中檢查什麼,以確定該對象的請求是否成功 – WraithNath 2012-02-09 16:17:34

0

我將爲此創建一個擴展方法。

只是在簽名

public static FirstObjectType GetObject(this SecondObjectType secondobjectType) 
{ 
    //do something 
} 

添加之後,你可以這樣做:

SecondObjectType sobj = new SecondObjectType() 
//code 
FirstObjectType fobj = sobj.GetObject(); 

並把它與像ExtensionMethods.cs我的其他擴展方法文件。 或者如果包含GetObject方法的類也是靜態的,則將它放在同一個類中(在這種情況下,放在SecondObjectType的類中)

1

這是這樣含糊的回答,但我會給出幾個一般提示

如果你有FirstObjectTypes集合,正在努力尋找匹配SecondObjectType的一個,那麼它屬於類擁有該集合。這可能是一種工廠模式。

如果您始終創建新的FirstObjectType,則它可能只是FirstObjectType的構造函數。

請問SecondObjectType是否需要了解FirstObjectType?如果是這樣,那麼我會考慮在SecondObjectType上做一個方法。

有一百萬其他情況,沒有一個適合所有人的尺寸。