8
votes

Conception principe haut ventilateur dans VS High Fan Out

Quelqu'un pourrait-il s'il vous plaît m'expliquer cela avec un exemple? Je suis contredit moi-même

  • High Fan in: une classe donnée conçue de manière à ce qu'elle soit un nombre élevé d'autres classes pouvant facilement le consommer.
  • High Fan Out: une classe devrait utiliser beaucoup d'autres classes.

    Les deux semblent être contradictoires. Quelqu'un peut-il l'expliquer avec un exemple? possible dans le cadre .NET.


1 commentaires

Ces termes proviennent de l'électronique: le fan-in est le nombre d'entrées qu'une puce a, un fan-out est un nombre de périphériques (en parallèle, simultanément) qu'il peut conduire ou sortie à. Par exemple, une légèreté peut avoir une entrée (la source d'alimentation) et peut conduire de nombreuses ampoules (faible ventilateur, ventilateur élevé). Pour moi, une classe appelle une autre classe pour obtenir entrées de celle-ci (j'appellerais ce fan- dans , mais peut-être que je manque quelque chose ...) et s'appelle < I> par Autres classes quand ils ont besoin d'une entrée. Mais une classe peut appeler une autre classe pour que quelque chose se passe aussi. En d'autres termes, l'analogie est tendue et trompeuse.


5 Réponses :


14
votes

Un ventilateur élevé est une bonne règle pour les classes de faible niveau. Ils devraient être très réutilisables par des classes de niveau supérieur. High Fan Out est une bonne règle pour les classes de haut niveau. Ils ne doivent pas "réinventer la roue", mais utiliser le code déjà existant - trouvé dans des classes de niveau bas.

Les règles ne sont donc pas contradicées car elles se rapportent à différentes classes.


0 commentaires

6
votes

Où avez-vous lu le principe de Fan High Fan Out? Afaik, c'est mauvais avec un ventilateur élevé.

http: //it.toolbox. Com / Blogs / Enterprise-Solutions / Conception-Principes-Fanin-vs-fanout-16088

Un ventilateur élevé dans une conception orientée objet est indiqué lorsqu'un objet doit traiter directement avec un grand nombre d'autres objets. Cela indique un degré élevé d'interdépendance de classe. En général, plus le fan-sortant d'un objet, le plus pauvre est la conception du système global.

Également mentionné dans Code complet , ventilateur élevé Dans le faible ventilateur sortit sont de bonnes conceptions de classe.


0 commentaires

1
votes

d'accord avec @jeanno. High fan-Out est indésirable.

"Le fanout d'un module est le nombre d'appels de ce module. Au moins trois études ont conclu que le fureur carré est un composant d'une métrique de conception qui corrélait bien à la probabilité de défaut." Grady, RB, "Application avec succès des métriques de logiciels" dans Ordinateur, Vol.27, N ° 9, PP.18-25, septembre 1994 DOI: 10.1109 / 2.312034


0 commentaires

10
votes

Vraiment le cas vraiment problématique est lorsque vous avez à la fois un fan de ventilateur élevé et élevé:

  • fan-in, faible fan-Out: un module avec peu de dépendances dans les deux sens. Tout bon.
  • Fan-in haut fan-in, faible fan-Out: Un module qui est fortement dépendant, mais lui-même ne dépend pas de beaucoup. Comme une bibliothèque d'utilités de bas niveau.
  • fan-in de faible ventilateur, ventilateur Hight: un module dépendant de nombreux autres modules, mais quelques modules en dépendent. Vous ne pouvez vraiment pas éviter d'avoir un module de niveau supérieur pour attacher votre application entière ensemble et, naturellement, ce module dépendra de chaque module dans le système.
  • fan-in de haut fan-in, fan-out de hauteur: Un module très problématique pouvant casser / besoin de modifier chaque fois que l'une de ses nombreuses dépendances change, et ce sera à tour de rôle de nombreuses autres parties de la système qui comptez dessus.

1 commentaires

"Naturellement, ce module dépendra de chaque module du système" transitivement, oui, mais cela ne dit pas grand chose. Nous parlons ici de dépendances directes.



0
votes

Dans le code de livre terminé, par Steve McConnell, vous voulez un fan de ventilateur élevé et bas à moyen:

Un ventilateur élevé fait référence à un nombre élevé de classes qui utilisent une donnée classer. Un ventilateur élevé implique qu'un système a été conçu pour faire une bonne utilisation des classes utilitaires aux niveaux inférieurs dans le système

Donc, haut fan-in c'est bien parce que la classe est utilisée beaucoup. Plus les classes peuvent utiliser une classe, la meilleure classe est.

Un moyen de fan de faible moyenne signifie avoir une classe donnée utilise un nombre de classes à faible taille moyenne. Un ventilateur élevé (plus d'environ sept) indique qu'une classe utilise un grand nombre d'autres classes et peut donc être trop complexe.

fan-out, d'autre part, est combien de choses que la classe appelle. Je ne pense pas que High Fan-Out n'est jamais vraiment souhaitable. Oui, vous souhaitez que vos classes de haut niveau utilisent des classes utilitaires de niveau inférieur qui sont elles-mêmes fan-in, mais si vous appelez beaucoup d'entre eux d'une classe, vous pourriez probablement casser la classe d'appel en parties plus petites et moins complexes. De cette façon, chaque partie devient un ventilateur de faible température en appelant uniquement les quelques classes utilitaires dont elles ont besoin.


0 commentaires