31 votes

Bonnes pratiques et anti-schémas d'injection de dépendance

Je suis relativement peu qualifié en injection de dépendance, et j'aimerais apprendre quelques bonnes pratiques et anti-modèles à utiliser et à éviter respectivement lors de l'utilisation de DI.

9voto

Samuel Meacham Points 5058

J'ai vraiment apprécié cet article, au sujet de DI, comme il est ciblé vers les personnes qui n'ont pas une tonne de DI expérience, ou ne savez même pas ce que c'est.

http://mtaulty.com/CommunityServer/blogs/mike%5Ftaultys%5Fblog/archive/2009/08/10/rough-notes-on-unity.aspx

Quelle est l'Unité?

It's a "dependency injection container".

Maintenant, à ce moment, un tas de gens la lecture de ce dire "Oui, nous le savons et nous sommes déjà à l'utiliser pour des raisons A, B, C ou nous avons choisi de ne pas l'utiliser pour des raisons X,Y,Z ", et j'imagine qu'un tas d'autres gens pourraient dire;

"Huh? What's a dependency injection container?"

Ce post est pour le dernier peuple – il n'est pas destinée à être exhaustive, mais j'espère que c'est pas complètement inutile soit :-)

3voto

jnorris Points 1527

À mon avis, le livre Dephanency Injection de Dhanji Prasanna est une lecture incontournable pour les concepteurs de logiciels, débutants et experts. Il traite directement vos questions DI.

3voto

Jesse Wilson Points 8455

Il y a une section des meilleures pratiques dans le guide de l' utilisateur de Guice.

1voto

Alex B Points 12826

J'ai constaté que lorsque je constate une violation de la loi de Demeter, c'est un indice que je pourrais vouloir une injection de dépendance.

Par exemple:

 void doit()
{
    i += object.anotherobject.addvalue; //violation of Law of Demeter
}
 

Indique parfois que je pourrais vouloir injecter une dépendance anotherobject .

0voto

James Black Points 26183

Ma règle de base sur l'utilisation de l'ai est que je vais injecter entre les couches, donc entre mon contrôleur et le dao serait un calque, afin que je puisse injecter, de sorte que si je veux de se moquer d'une couche je peux.

Je pense à l'aide de DI dans le même calque n'est pas une bonne idée, principalement en raison de la couche doit être étroitement associés, comme ils sont liés, sauf si vous avez un article de l'utilisateur qui le rend utile.

Par exemple, si votre DAO est peut-être sur des ordinateurs distincts, alors vous devriez être en mesure de prétendre qu'ils sont l'une couche, mais l'utilisation de DI réellement basculer entre le tout sur une seule machine et des machines séparées. Ensuite, le développeur peut tout faire sur une seule machine et il devrait fonctionner sur des machines distinctes.

Mais, sauf s'il existe un besoin pressant, je pense que DI dans le même calque est une complication inutile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X