En espérant qu'un grand maître peut éclairer une lumière. Très hauteur aperçu est que je ne suis pas débutant de coder, mais toujours nouveau à OOP. Cet ensemble de classes de messages est au cœur d'une grande application de simulation que nous écrivons, et je ne veux pas le faire bêtement - cette interface coupe l'application en deux, du séquenceur à l'exécutant et inversement. p>
Ma question est de savoir si c'est une mauvaise idée d'avoir une hiérarchie héritarière cette profondeur (l'image n'est pas encore chargée, pourrait aller 5 ou 6 au fond à la fin). Ceci est par opposition à avoir que certaines des classes d'enfants ont juste une association dirigée vers leur classe mère, au lieu de hériter. P>
J'ai lu qu'une hiérarchie d'héritage en profondeur n'est pas une bonne idée, et si une classe enfant hérite simplement d'avoir les données du parent, vous devez simplement inclure le parent comme des données à l'enfant, mais je suis Avoir du mal à m'envelopper la tête autour de la raison. Quelle mauvaise chose va nous arriver si j'ai décidé de faire une hiérarchie héritarière 7-profonde ou quelque chose comme ça? Clairement, il y a un léger succès et changer les choses au sommet de la hiérarchie va avoir d'énormes ondulations dans l'application, mais à part cela, je ne vois pas de problème. De côté, je me soucie peu de différences mineures de la performance. P>
p>
(Question Bonus: Y a-t-il un paquet de tablettes hors tension qui gère ce genre de choses? Nous avons la plupart des simulations physiques de bas niveau gérés, mais le programme de séquençage que nous allons devoir écrire. J'ai juste eu Cette suspicion que ce que j'ai défini est très similaire à ce que fait environ 10 000 développeurs de simulation devant moi.) P>
(Question de bonus n ° 2: Toute maîtrise des systèmes de simulation et de la programmation du POO, qui ne détesterait pas la vie à Los Angeles? Nous embauchons.) P>
3 Réponses :
que si une classe enfant hérite simplement d'avoir les données du parent p> blockQuote>
C'est une mauvaise idée. Il y a cette compréhension que vous définissez des classes de base comme le plus générique des contrats d'un ensemble de classes (béton) vont honorer. Cela signifie généralement que votre contrat concerne comportement em> et non de mise en œuvre. P>
Quelle mauvaise chose va nous arriver si j'ai décidé de faire une hiérarchie héritarière 7-profonde ou quelque chose comme ça? P> blockQuote>
Les principaux problèmes ici sont mondains: p>
- classes de base fragiles (les modifications apportées à la base sont un cauchemar pour le dérivé) li>
- L'accouplement accru (avec trop de classes de base est un couplage serré) li>
- encapsulation affaiblit li>
- Tests Tests (méthodes remplacées sur le niveau de feuille ne peut être simplement testée pour reproduire le comportement de l'utilisateur final toujours en raison de plusieurs appels chaînés ici et là) LI>
- Maintenance (provient d'un fort couplage) li> ul>
Voir cette question assez tard, mais j'ai eu de nombreuses réflexions à ce sujet et j'ai été mordue avec des hiérarchies d'héritage profondes. Une raison pour laquelle ils sont mauvais sont parce que vous aurez inévitablement la classification de la classification lorsque vous spécialisez les nombreuses sous-classes. Cependant, une fois que vous avez la structure de classe en place, il sera difficile de changer, car cela allait casser le code client. P>
J'ai blogué à propos de cette ici a>. p>
Une question ancienne, mais une question active dans le développement de logiciels et souhaitait ajouter une opinion qui peut aider. P>
La surcharge de maintenance ne peut pas être estimée lorsque vous touchez les classes de base avec DI. Il s'agit d'un inconvénient majeur qui a récemment affecté notre structure de succession profonde de 3 niveaux. De plus, si vous base est un modèle, attendez-vous à violer sol (i) (d) si vous avez trop d'enfants avec un seul parent dérivé en 3 niveaux, par exemple. P>
Généralement, juste pour accéder aux données, je choisirais un motif de conception adéquat ou transmettez le pointeur de données s'il ne viole pas solide. Selon que vous venez de lire ou d'écrire, j'éviterais également les getters et les configurateurs pour éviter le quasi-classes < / a>. C'est rare cas que les enfants par défaut sont «protégés» et je pense que la structure dans ce cas est un candidat à être imparfait à la conception. P>
Je ne comprends pas les détails, mais la mise en page me semble assez désordonnée. Quant à q. 2, trop chauve-souris tu ne m'as pas demandé il y a 7 ans.