I programmatori Ruby (e altri linguaggi dinamici) usano IoC / Dipendenza iniezione?

8

Sono principalmente uno sviluppatore di ASP.NET e l'unica cosa che mi è stata presentata negli ultimi anni che ha avuto l'impatto più drammatico sulla qualità del codice che scrivo sta imparando a usare i contenitori IoC per gestire le dipendenze tra diversi livelli dell'applicazione in modo efficiente.

Recentemente ho reso il mio hobby imparare Ruby (e Rails) per progetti personali, e adoro la lingua fino ad ora. Tuttavia, una delle cose che ho notato dai vari tutorial e riferimenti che ho utilizzato, è che non è stato ancora menzionato l'utilizzo di IoC. Questo è in netto contrasto con .NET, dove è (e dove non è, dovrebbe essere) inserito negli sviluppatori in una fase iniziale.

Apprezzo che uno dei motivi per cui l'integrazione delle dipendenze potrebbe non essere necessaria in Ruby, è che tutto in una classe è pubblico e virtuale, quindi aperto alle modifiche, quindi non è veramente necessario per scrivere buoni test unitari. Ma ci sono naturalmente molti altri vantaggi nell'utilizzo di contenitori IoC come le opzioni di disaccoppiamento che ciò comporta, gestione della creazione di oggetti e durata nel tempo ecc.

L'iniezione di dipendenza è usata in Ruby? In caso contrario, perché questo non è un problema?

    
posta richeym 22.12.2010 - 15:49
fonte

2 risposte

6

Inversion of Control è ancora un concetto che si applica bene. Non è necessario eseguire l'iniezione di dipendenza per applicare IoC, anche se in .NET tendono ad andare spesso insieme.

Il grosso problema dietro l'integrazione delle dipendenze in .NET sta evitando a seconda delle implementazioni concrete. In Ruby, come hai detto, le cose sono molto più aperte e puoi sostituire l'implementazione di una classe in fase di esecuzione, quindi c'è meno bisogno di creare "interfacce" e di iniettare esplicitamente le dipendenze.

Si può affermare che interfacce e IoC / DI non sono strettamente necessari in .NET (anche quando si tratta di test) ci sono strutture di derisione che ti permetteranno di eliminare la necessità di interfacciare tutto sotto il sole) , ma è più pronunciato in Ruby.

    
risposta data 22.12.2010 - 16:01
fonte
3

L'Iniezione delle Dipendenze è meno importante nei linguaggi dinamici perché sono dinamici- puoi cambiare il tuo codice quando vuoi, così non devi pianificare in anticipo la possibilità di cambiare le dipendenze. Ci sono modi più semplici per raggiungere l'IoC in una lingua come Ruby.

Fabio Kung su questo argomento che si riferisce a Jamis Buck sulla stessa cosa - quelli danno un po 'di profondità.

    
risposta data 22.12.2010 - 16:16
fonte

Leggi altre domande sui tag