TDDを実行していると、依存性注入の原則を採用せざるを得なくなり、コードが緩く結合されてしまいます。
コードがゆるく結合しているアプリケーションを理解するのは難しいと言われました。
ゆるく結合されたコードの長所と短所を教えてください。
TDDを実行していると、依存性注入の原則を採用せざるを得なくなり、コードが緩く結合されてしまいます。
コードがゆるく結合しているアプリケーションを理解するのは難しいと言われました。
ゆるく結合されたコードの長所と短所を教えてください。
最大の利点は、1つのモジュールに変更を導入しても、他のモジュールが予期しない方法で破損しないことです。
依存性注入が自動的に低結合につながることはありません。低結合の長所についての上記の回答に同意します。依存性注入の主な利点は、テストの可能性が向上し、実装ではなく、プログラムからインターフェイスへのGoFの原則に従うのに役立つことです。ただし、注入された依存関係との結合度を高くすることもできます。
もう1つの利点は、複数の実装がある場合にコンポーネントをより簡単に交換できることです。
ショッピングカートシステムがあると想像してください。通常、データベースを保存して読み取ります。これがデフォルトです。ただし、バックエンドを使用するように注入することはできます。これはそれほど良くはありませんが、データベースがない場合は機能します。
緩く結合されているため、非常に変更可能です。それが要点です。それが必要ない場合は、緩い結合によって多くの間接化が発生し、システムの「深さ」が増す可能性があります。発生するすべてを確認するには、レベルを見下ろす必要があります。
あなたが言ったように、緩く結合されたコードの短所は複雑さを増し、理解するのが難しいです。通常、コードが緩く結合されている場合、コードが何をするかはすぐにはわかりません。
他の人が言っているように:利点は、他のコード/モジュール/オブジェクト/コンポーネントが相互に依存していない場合に、それらを交換するのがはるかに簡単になることです。
すべてのオブジェクト指向デザインと同様に、トレードオフを行う必要があります。スワップインとスワップアウトが容易な高度にモジュール化されたコードを使用することがより重要ですか。それとも、より単純でわかりやすいコードを用意することがより重要ですか?あなたはそれを決める必要があります。
再利用、拡張性、および副作用の軽減。