Lo intentaré de nuevo. Mi última respuesta se perdió la pregunta por una milla y se alejó del tema.
El uso de pseudo-código, la inyección de dependencias dice con:
class Person
def Chat() {
someOperation("X","Y","Z")
end
end
...
Person.new().Chat()
y adentro con:
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()
, y en general con poner el objeto y la llamada en diferentes archivos para. Propósitos de SCM.
Si "X", "Y" o "Z" son burlables (... si fueran objetos ... (!) ... (!) ...) no tienen nada que ver con si DI es bueno. De Verdad. :-)
DI es simplemente más fácil en Python o Ruby, como en muchas otras tareas, porque hay más de un enfoque de scripting, como dice Jörg; y también, por supuesto, menos de una cultura y una tendencia que dice que las constantes y los adaptadores se deben poblar en modelos y constantes globales.
En términos prácticos para mí DI es el primer paso para separar los parámetros de aplicación, constantes de API y fábricas en archivos separados para ayudar a que su informe de seguimiento de revisión parezca menos espagueti ("Fueron esos controles extra en el AppController a cambie la configuración ... o actualice el código ...? ") y más información, y más fácil de leer.
Mi recomendación: Siga usando DI ... :-)
Esto parece ser un duplicado de la pregunta .. http://stackoverflow.com/questions/2273683/why-are-ioc-containers- innecesario-con-lenguajes dinámicos/2308494 # 2308494 –