2017-10-19 10 views
0

私は制御しているデバイスの数を設定するために一連の関数呼び出しが必要なシステムを設計しています。異なる階層の機能階層が同じデータにアクセスする必要がありますか?

私はA()を呼び出し、B(arg 1)を呼び出すとします。C(arg 1, arg 2) + D(arg 1, arg 2, arg 3)を呼び出します。

Aに表示されます。それが方が良いでしょう:

  1. Barg 1..3へのアクセス権を持って、彼らに自分自身を見つけるとC + DOR
  2. 暗闇の中でBを残しを呼び出し、Aはその意志、Bに渡す持つためにそれらを使用してみましょう をC + Dに転送するだけですか?

私の勘では、私は、変数がそれらにおせっかい機能の最小値を持つようにしたいと第二オプションは、優れていることです。

答えて

0

Iは、2つのタイプにコードを分離することを好む:

インターアクターは、(= 1すなわちcyclomatic complexityない制御フロー)は "論理" を持たない論理、それらは唯一持っ

  • インタラクター
  • 共同作業者(コードの他の部分へのインスタンスまたは関数参照)。彼らの仕事は、これらの協力者への関数呼び出しを調整することです。

    論理は論理ループ、ifs、例外処理、必要なものは何でも協力者はいない(またはそれらを最小限に保つ)。

    例では、Aはインタラクタ、B、C、Dはロジックです。私はA、B、C、Dの呼び出しを持っています。AはBからの結果をおそらくCとDに転送します。

    このようにして、簡単な状態ベースでB、C、Dを完全にテストできます。必要に応じて模擬テストを使ってAをテストすることができます。 Aが主に宣言的なコードであり、単独でそれをテストすることはあまり価値がありません(もちろん、システム全体がどこかで受け入れテストを受けていると仮定して)。

    状態ベーステストおよび模擬テストでは、this answerを参照してください。

    ヒント:インタラクタのコラボレータは主にロジックですが、他のインタラクタでもあります。

関連する問題