1

依存関係の管理を本当に理解しているかどうかはわかりません。別のクラスの詳細だけに依存していないということですか?呼び出し自体が正しいこととは何の関係もありませんか?私はより小さな、より具体的なクラスを作るために聞き続けていますが、彼らはお互いに依存することができず、これは私には不可能のようです。誰かが私にこれを簡単に説明しようとすることができますか?以下にいくつか例を示します。

//Bad Dependency
public class TestOne
{
     TestTwo testTwo;
     public void TestOneMethod()
     {
          testTwo = new TestTwo();
          testTwo.SomeProperty = "Value";
          testTwo.SomeMethodThatWorksWithSomeProperty();
     }
}
//Bad dependency??
public class TestOne
{
     TestTwo testTwo;
     public void TestOneMethod()
     {
          int myInt = 0;
          TestThree testThree = new TestThree();
          //... Some Code that works with testThree

          testTwo = new TestTwo();
          myInt = testTwo.GetSomeInteger(testThree);
     }
}

実行ごとに設定できる設定は1つだけですが、新しいクラスが呼び出されるたびにデータベースにアクセスし続ける必要があるのはなぜですか?これは悪い依存関係ですか


public static class Application
{
    public static int SomeSetting = 0;
    public static GetSettingsFromDatabase()
    {
        //loads the settings for this store
        DatabaseClass dbClass = DatabaseClassDataSource.LoadForStore();
        SomeSetting = dbClass.SomeSetting;
    }
}

public class MyClass
{
    public void MethodOne()
    {
        if(Application.SomeSetting == 1) { //... }
    }
}

public class MyClassTwo
{
    public void MethodOne()
    {
        if(Application.SomeSetting == 1) { //... }
    }
}
4

2 に答える 2

1

依存関係管理は、大規模なコード ベースが保守不能になるのを回避するためのプラクティスです。コードベースがどのように構成されているかを理解しようとすると、スパゲッティの皿のように見えるコードベースは保守不可能であると言えます!!

依存関係管理は、クラスなどのコード アーティファクトをコンポーネントという名前のチャンクにグループ化し、(依存関係のサイクルなどの欠陥を回避することによって) コンポーネント間の依存関係が理解可能で正常であることを確認することで構成されます

于 2010-08-29T19:05:56.737 に答える
0

確かに、データベースの呼び出しなど、リソースを集中的に使用するアクションを使用している場合は、パフォーマンスのために設計パターンを破ることを正当化できます。とは言っても、これが常に悪い習慣であるとは確信していません..NETフレームワークにはかなり緊密に結合された例があると確信しています.その多くが一般に公開されています。ただし、設計パターンを破った場合は、何が起こっているのか、その理由を文書化したい場合があります。特に、他の誰かがこのコードを見たり保守したりする可能性がある場合は、できる限り内部化してください。

于 2010-08-26T17:36:02.713 に答える