もう一度やってみます。私の最後の回答は、質問を1マイルも見逃しており、トピックから大きく外れていました。
疑似コードを使用すると、依存性注入は次のように言います。
class Person
def Chat() {
someOperation("X","Y","Z")
end
end
...
Person.new().Chat()
とで:
class Person
initialize(a,b,c)
@a=a
@b=b
@c=c
end
def Chat()
someOperation(@a,@b,@c)
end
end
...
Person.new("X","Y","Z").Chat()
、.、そして一般的には、SCM の目的でオブジェクトと呼び出しを別のファイルに入れます。
「X」、「Y」、または「Z」がモック可能かどうか (...代わりにオブジェクトだった場合...(!)...(!)...) は、DI が良いかどうかとはまったく関係ありません。 . 本当。:-)
Jörg が言うように、DI は、他の多くのタスクと同様に、Python や Ruby で簡単に実行できます。また、もちろん、定数とアダプターをモデルとグローバル定数に取り込む必要があるという文化や傾向も少なくなります。
私にとって実際的に言えば、DI は、これらのアプリケーション パラメーター、API 定数、およびファクトリを個別のファイルに分離して、リビジョン追跡レポートがスパゲッティのように見えないようにするための最初のステップです (「構成を変更するために、AppController で追加のチェックインが行われたか. .? または、コードを更新するには...?") より多くの情報を提供し、より読みやすくします。
私の推奨事項:DIを使い続けてください... :-)