2017-02-24 4 views
1

Je crée moi-même un moteur de jeu 3D en utilisant OpenGL et le C++ (avec les bibliothèques Boost). Je suppose qu'il va sans dire que c'est un LOT de travail. Pour alléger la charge, j'ai commencé à créer des classes wrapper pour les choses dans Boost qui correspondent exactement à mes besoins, au lieu de faire les mêmes classes à partir de zéro. De plus, mon schéma de nommage est très différent de Boost et de la STL, donc j'ai d'abord pensé que cela restait cohérent dans le code.Est-ce une mauvaise architecture logicielle en C++ de créer une classe wrapper au lieu de créer à partir de zéro?

Je suis préoccupé par le fait que cette pratique est une mauvaise technique de conception. Est-ce que c'est OK? Quels problèmes imprévus peuvent survenir, le cas échéant, de créer autant de classes wrapper?

+1

"Quels problèmes imprévus peuvent survenir" pas beaucoup vraiment. Tant que vous masquer correctement les fonctionnalités non désirées qui n'ont pas de sens avec votre classe wrapper et que vous n'êtes pas super serré sur la mémoire alors l'habillage des types pré fait est probablement bien. – George

+0

Beats l'enfer d'un kludge d'héritage qui change juste les noms. Les inconvénients sont une couche supplémentaire d'abstraction (qui peut être transformée en une amélioration si elle est correctement résumée) et la possibilité d'injecter des bogues dans l'encapsuleur (par rapport à tout écrire à partir de zéro, cela devrait être MOINS buggé). – user4581301

+0

Je n'aime pas beaucoup l'idée d'écrire tous mes conteneurs, ficelles, flux, et cetera à la main. –

Répondre

2

Non, il est totalement inoffensif d'utiliser des enveloppes dans la plupart des cas.

Habituellement, votre compilateur doit dérouler tous les appels de fonction et optimiser le surcoût des bibliothèques sources.

Le léger problème serait cependant, si vous utilisez des binaires précompilés, ce qui introduirait une surcharge.

Pour utiliser des wrappers dans votre boîtier (ce qui signifie conserver votre convention de style, de légères modifications de fonctionnalités, etc.) est totalement correct.

ADD: Certaines des choses « unforseen » peut-être le temps de compilation supplémentaire, désordre dans le code (U besoin de continuer à utiliser ces emballages toujours ...), ou des fonctionnalités supplémentaires ou le comportement de l'original classe, que votre wrapper ne supporte pas.

+0

Acceptera dans quelques minutes. Je viens d'être upvoted, je dois attendre. –