-2

Clean Code book には、ベスト プラクティスは、引数を渡されない関数を使用することであるという意見があります。だから私の質問は、お互いに引数を渡す関数、または静的オブジェクトを共有して操作する void 関数を操作するのがより理にかなっているのですか?

例:

オプション1。

public List<MyThing> FunctionA(List <MyThing> myThings){

myThings.Add(SomeBlah);

return myThings;     
}

public void FunctionB(){

List<MyThing> myThings = new List<MyThing>();

myThings = InitiateThingsOrWhatever();

List<MyThing> myChangedThings = FunctionA(myThings);  
}

オプション 2:

private static List<MyThing> _myThings = new List<MyThing>();

public static List<MyThing> MyThings{
get { return _myThing; }
set { _myThing = value; }
}

public void SomeFunction(){

FunctionA();
FunctionB();
}

public void FunctionA(){

MyThings = YadaYadaStuff();     
}

public void FunctionB(){

var showMyChangedThings = MyThings; 
}
4

3 に答える 3

1

ボブおじさんは、あなたが参照している箇所で、単一のクラス内の機能間の相互作用について話し合っていました。彼は、これらの関数間で共通に渡されるデータを取得し、それをオブジェクトのプライベート属性に移動することを推奨していました。したがって、これはグローバル データを作成するのではなく、すべてクラス内にカプセル化されます。静的データ/関数アプローチは、グローバル名前空間を汚染しています。

于 2013-04-05T17:52:15.113 に答える
0

static は決して良くなく、オプション 2 の設計は実質的にどのソフトウェアでも使用できません。異なる状態を維持する必要がある同じクラスの 2 つのオブジェクトがある場合はどうでしょうか?

于 2013-04-05T17:54:23.387 に答える