2011-03-03 2 views
9

En règle générale, j'aime utiliser l'injection de dépendance basée sur le constructeur, mais récemment je travaillais sur une classe qui dépendait de 4 autres classes. Parce que les longues listes d'arguments sont difficiles à lire, j'ai remplacé le constructeur 4-args par 4 setters. Quand j'ai mentionné cela à un collègue, il a soutenu que c'est en soi une odeur de code. Il a suggéré que je "casse" cette classe.Est-ce que "trop ​​de dépendances" sent le code?

La classe elle-même est déjà relativement petite; il arrive juste d'utiliser plusieurs collaborateurs pour faire le gros du travail. Il consiste en une méthode courte (~ 12 lignes, y compris les espaces) qui appelle 4 collaborateurs. Êtes-vous d'accord ou non avec l'affirmation selon laquelle il s'agit d'une odeur de code? Y a-t-il une mesure objective que je peux utiliser pour déterminer combien de dépendances est «trop»? Comment cela se rapporte-t-il à des paramètres tels que la complexité cyclomatique, la cohésion, le couplage, etc.?

Répondre

3

En termes de juste votre question comme vous l'avez formulé, oui c'est. Mais c'est un peu plus compliqué, si vous arrivez à ce code après 6 mois, pouvez-vous le grok dans les 2-3 premières minutes après avoir lu le code? Cela vous oblige-t-il à regarder d'autres parties du code pour le comprendre? La modification des collaborateurs nécessitera-t-elle de modifier cette classe? Serez-vous capable d'expliquer cette classe à un autre ingénieur (en particulier les nouveaux ingénieurs) en 2-4 phrases? Tout cela aide à décider cela. Le point que j'essaye de faire est qu'il y a ici des intangibles qui devraient également être considérés avant de décider ceci. C'est une question d'expérience, et apprendre quand il faut savoir ne pas appliquer les règles généralement acceptées, est important.

Questions connexes