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

ここではこの関数を使用しますか?コードの可読性、慣習、伝統の観点から、SecondObjectTypeクラスまたはFirstObjectTypeクラスに記述する必要がありますか?関数は、あなたの経験からリターンクラスまたはパラメータクラスに含まれるべきですか?適切なクラスに関数を配置する

ご回答ありがとうございます。

+0

GetObject()のポイントは何ですか?あなたは工場パターンを実装していますか? – jrummell

答えて

2

通常、このメソッドは戻り値の型と同じ型のクラスに入れますメソッド。

例:

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

がFirstObjectTypeクラスで行くだろう。

また、ファクトリパターンを使用して、必要なオブジェクトを取得するためのファクトリを用意することもできます。次へsimliarコーディング与える可能性がある:

FirstObjectTypeFactory.GetObject(SecondObjectType secondObjectType) 

は、その後、あなたが常にその戻り値の型に基づいてからオブジェクトを取得するにはどの工場を知っています。

+0

合意。通常、オブジェクトAが必要なときは、Aが最初に表示されます。 – Bort

+0

私はFirstObjectTypeに静的なGetObjectを持っているということを理解していません。なぜコンストラクタを使用しないのですか? – cadrell0

+0

コンストラクタを使用して、最初のオブジェクトを2番目のオブジェクトから構築/発見できない場合は、オブジェクトが見つからない場合はnullを返します。空のクラスを持つだけです。空のクラスのインスタンスではなく、何も返さない場合はnullを返すことをお勧めします。チェックが容易で、別の開発者がクラスを使用している場合は、オブジェクトの要求が成功したかどうかを空のクラスで調べるために何を確認する必要があるでしょうか? – WraithNath

0

私はそのための拡張メソッドを作成します。

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

をそしてExtensionMethods.csように私の他の拡張メソッドファイルにそれを置く:

ちょうどあなたが行うことができた後に署名

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

にこのを追加します。 GetObjectメソッドを含むクラスが静的な場合でも、同じクラスに入れてください(この場合はSecondObjectTypeのクラスにあります)

1

これは答えることが漠然とへの道ですが、FirstObjectTypesのコレクションを持っているとSecondObjectTypeと一致するものを見つけようとしている場合は、私はいくつかの一般的なヒントに

を与えるでしょう、それはそのクラスに属しますコレクションを所有しています。これは工場のパターンかもしれません。

いつも新しいFirstObjectTypeを作成している場合は、FirstObjectTypeのコンストラクタになります。

SecondObjectTypeFirstObjectTypeの知識が必要ですか?もしそうなら、私はそれをSecondObjectTypeのメソッドにすることを検討します。

これ以外にも数百万ものシナリオが存在し、サイズに合ったものはありません。

関連する問題