Je vois que certaines personnes recommandent de sept comme une limite supérieure. Apparemment, il n'est pas vrai que les gens peuvent tenir sept choses dans leur tête à la fois; ils ne peuvent se rappeler de quatre (Susan Weinschenk, 100 Choses à Chaque Concepteur a Besoin de Savoir sur Personnes, 48). De même, je considère que quatre à être quelque chose d'une grande orbite autour de la terre. Mais c'est parce que ma pensée a été irrémédiablement altéré par Bob Martin.
Dans le Code Propre, Oncle Bob plaide pour trois comme supérieur général de limite pour le nombre de paramètres. Il fait de la radicalité de la demande (40):
Le nombre idéal d'arguments pour une fonction est égale à zéro (niladiques). Vient ensuite un (monadique), suivie de près par deux (dyadique). Trois arguments (triadique) doit être évitée autant que possible. Plus de trois (polyadic) nécessite très spécial justification—et puis, ne doit pas être utilisé de toute façon.
Il dit cela à cause de la lisibilité, mais aussi du fait de la testabilité:
Imaginez la difficulté de l'écriture des cas de tests pour s'assurer que toutes les différentes combinaisons d'arguments fonctionner correctement.
Je vous encourage fortement à en trouver une copie de son livre et à la lecture de sa pleine discussion des arguments de la fonction (40-43).
Je suis d'accord avec ceux qui ont mentionné le Principe de Responsabilité Unique. Il est difficile pour moi de croire qu'une classe qui a besoin de plus que deux ou trois valeurs/des objets sans valeurs par défaut raisonnables a vraiment qu'une seule responsabilité, et ne serait pas mieux avec une autre classe extrait.
Maintenant, si vous êtes l'injection de vos dépendances par le constructeur, Bob Martin arguments au sujet de combien il est facile d'invoquer le constructeur ne pas tellement s'appliquent (parce que d'habitude, alors il existe un seul point dans votre application où vous fil, ou vous avez même un cadre qui le fait pour vous). Toutefois, le Principe de Responsabilité Unique est toujours d'actualité: une fois qu'une classe a quatre dépendances, je considère que l'odeur qu'elle est en train de faire une grande quantité de travail.
Cependant, comme avec toutes les choses dans l'informatique, il y a sans doute valides pour avoir un grand nombre de paramètres du constructeur. Ne pas déformer votre code afin d'éviter à l'aide d'un grand nombre de paramètres, mais si vous utilisez un grand nombre de paramètres, d'arrêter et de lui donner une certaine pensée, car il peut signifier que votre code est déjà tordu.