Je dois élaborer un petit cadre qui va être utilisé par plusieurs de nos applications. En plus de cela, le framework va être utilisé plusieurs fois dans la même application, mais avec une configuration légèrement différente. La 'nature' de la configuration est plus complexe que de simplement avoir des options de configuration et des setters. En pratique, l'application doit fournir ses propres structures de données qui seront intégrées dans le cadre, ce qui le rendra encore plus complexe.Classes de base versus gabarits versus code généré versus macro
Je peux voir les 4 alternatives suivantes par écrit le cadre:
- Mettez la logique commune dans une classe de base, et indiquer à l'application qu'il doit hériter de cette classe de base
- Mettez la logique une classe basé sur un modèle, dans lequel l'application doit passer sa propre implémentation de classe
- Décrire la configuration spécifique de l'application dans un fichier de configuration et générer du code C++ au cours du processus de construction
- Fournir de macro qui peuvent être utilisés pour développer t il 'configuration' au code réel
Quels arguments doivent être pris en compte lors du choix d'une bonne alternative?
Certaines de ces alternatives sont-elles meilleures que d'autres, et pourquoi?
Notez que dans mon cas, la performance est une priorité absolue.
"La performance est une priorité absolue" C'est ce que tout le monde dit. –
@John, dans mon cas (applications de simulation mathématique avec des millions de structures de données, prenant jusqu'à 8 Go de mémoire) la performance est en effet la priorité absolue. Un appel virtuel inutile ou un accès indirect au pointeur peut être la différence entre une application utilisable ou une application inutilisable. – Patrick