De l'article:
Plus généralement, le problème du yo-yo peut également concerner toute situation dans laquelle une personne doit basculer sans cesse entre différentes sources d'informations afin de comprendre un concept.
Le code source est lu beaucoup plus souvent qu'il n'est écrit. Par conséquent, le problème du yo-yo, qui consiste à basculer entre plusieurs fichiers, est une préoccupation.
Cependant, non , le problème du yo-yo semble beaucoup plus pertinent lorsqu'il s'agit de modules ou de classes fortement interdépendants (qui s'appellent entre eux). Ce sont des cauchemars spéciaux à lire, et c’est probablement ce que l’intéressant du problème du yo-yo avait en tête.
Cependant - oui , il est important d'éviter de trop nombreuses couches d'abstraction!
Toutes les abstractions non triviales, dans une certaine mesure, ont des fuites. - la loi des abstractions qui fuient.
Par exemple, je ne souscris pas à l'hypothèse formulée dans la réponse de mmmaaa selon laquelle "il n'est pas nécessaire de lire la classe ZipCode pour comprendre la classe d'adresse". Mon expérience a été que vous faites - au moins les premières fois où vous lisez le code. Cependant, comme d' autres l' ont noté, il y a des moments où une ZipCode
classe est appropriée.
YAGNI (il n'y en aura pas besoin) est un meilleur modèle à suivre pour éviter le code de lasagne (code avec trop de couches) - les abstractions, telles que les types et les classes sont là pour aider le programmeur, et ne doivent pas être utilisées à moins qu'elles ne le soient une aide.
Je vise personnellement à "enregistrer des lignes de code" (et bien sûr à "enregistrer des fichiers / modules / classes", etc.). Je suis persuadé que certains voudront bien appliquer l'épithète d '"obsédé primitif" - je trouve qu'il est plus important d'avoir un code sur lequel il est facile de raisonner que de s'inquiéter des étiquettes, des motifs et des anti-motifs. Le choix correct du moment où créer une fonction, un module / fichier / classe ou placer une fonction à un emplacement commun est très situationnel. Je vise environ 3-100 fonctions de ligne, 80-500 fichiers de ligne et "1, 2, n" pour un code de bibliothèque réutilisable ( SLOC - sans commentaires ni passe-partout; je souhaite généralement au moins un minimum de SLOC supplémentaire par ligne obligatoire passe-partout).
La plupart des tendances positives sont apparues lorsque les développeurs ont fait exactement cela, quand ils en avaient besoin . Il est beaucoup plus important d'apprendre à écrire du code lisible que d'essayer d'appliquer des modèles sans résoudre le même problème. Tout bon développeur peut implémenter le modèle d'usine sans l'avoir vu auparavant, dans les cas peu communs où il convient parfaitement à son problème. J'ai utilisé le modèle d'usine, le modèle d'observateur, et probablement des centaines d'autres, sans connaître leur nom (c'est-à-dire, existe-t-il un "modèle d'affectation variable"?). Pour une expérience amusante (voyez combien de modèles GoF sont intégrés au langage JS ) , j'ai arrêté de compter après environ 12-15 ans en 2009. Le modèle Factory est aussi simple que de renvoyer un objet depuis un constructeur JS, par exemple - nul besoin de un WidgetFactory.
Donc, oui , parfois, ZipCode
c'est une bonne classe. Cependant, non , le problème du yo-yo n'est pas strictement pertinent.