解決する作業が複雑な場合は、実行を制御する1つの方法がある場合があります。ヌルチェック、if文、型間のマップメソッドの呼び出しなどのために、このメソッドは非常に長くなる可能性があり、簡単にするために苦労しています。メソッド呼び出しの責任は誰にありますか?
例1
public class A
public string MethodA(string stringA)
{
var fooResult = _fooService.fooMethod(stringA);
if(fooResult)
var barResult = _barService.barMethod(fooResult);
if(barResult)
// And so on..
return someResult;
}
Iは、第1の方法は簡単になり、メソッド呼び出しを連鎖できました。しかしこれにより、fooMethodは_barServiceに依存し、barMethodは_someServiceに依存します。
例2(連鎖メソッド呼び出しを超えるがと同じ)
public class B
public string MethodB(string stringB)
{
return _fooService.fooMethod(stringB);
}
public class Foo
public string fooMethod(string stringB)
{
return _barService.barMethod(stringB);
}
public class Bar
public string barMethod(string fooString)
{
return _someService.someMethod(fooString);
// And so on...
}
どのように私は私のコードを構造化する必要がありますか?どのメソッドが別のメソッドを呼び出す責任があるのか、どのように考えるべきでしょうか?
言い換えれば、私は次のように実行する必要があります。class A
{
Execute()
{
A();
B();
C();
}
method A()
{
...
}
method B()
{
...
}
method C()
{
...
}
}
またはこのような
:class B
{
Execute()
{
A();
}
method A()
{
B();
}
method B()
{
C();
}
method C()
{
...
}
}
2番目の例では苦労していることは明確ではありません。ほとんどの場合、メソッドではなくクラスの依存関係を最小化することに気をつけるべきです(疎結合について読む) – Megamozg
@Megamozg私はうまくいけばそれをもっと明確にするために質問を編集しました。例1と例2では同じ結果が得られますが、依存関係は別の場所になります。あなたは例1または2を好むでしょうか?例1を好むなら、その方法を長く管理し、それ以上のことを何とかしていくのですか? – Paul