Nous avons été le développement du code en utilisant le couplage et l'injection de dépendance.
Beaucoup de "service" des classes de style dispose d'un constructeur et une méthode qui implémente une interface. Chaque classe est très facile à comprendre dans l'isolement.
Toutefois, en raison de la nature de l'assemblage, à la recherche à une classe vous dit rien sur les classes autour d'elle ou si elle s'inscrit dans la grande image.
Il n'est pas facile de sauter à des collaborateurs à l'aide d'Eclipse parce que vous avez à passer par les interfaces. Si l'interface est - Runnable
, qui n'est d'aucune aide dans la recherche de la classe à laquelle est effectivement branché. Vraiment, il est nécessaire de revenir à la DI la définition de conteneur et d'essayer de comprendre les choses à partir de là.
Voici une ligne de code à partir d'une dépendance injecté classe de service:-
// myExpiryCutoffDateService was injected,
Date cutoff = myExpiryCutoffDateService.get();
Couplage ici est aussi lâche que possible. L'expiration de la date de la mise en œuvre littéralement en aucune manière.
Voici à quoi il pourrait ressembler dans un plus couplé application.
ExpiryDateService = new ExpiryDateService();
Date cutoff = getCutoffDate( databaseConnection, paymentInstrument );
À partir de la étroitement associée version, je peux en déduire que la date limite est en quelque sorte déterminée à partir de l'instrument de paiement à l'aide d'une connexion de base de données.
Je suis la recherche de code du premier style plus difficile à comprendre que le code de la deuxième de style.
Vous pourriez dire que lors de la lecture de cette classe, je n'ai pas besoin de savoir comment la date limite est compris. C'est vrai, mais si je suis rétrécissement sur un bogue ou de travail, d'où une amélioration des besoins de logement, c'est de l'information utile à savoir.
Est ce que quelqu'un d'autre rencontre ce problème? Quelles solutions avez-vous? Est-ce juste quelque chose à régler pour? Existe-il des outils pour permettre la visualisation de la façon dont les classes sont câblés ensemble? Dois-je rendre les classes plus grandes ou plus couplé?
(Avons délibérément laissé de côté cette question conteneur-agnostique que je suis intéressé par les réponses à tout).