I have to make a decision regarding generalization vs polymorphism.
Well the scenario is standard: I want to make my monolithic interdependent
code to be more modular, clean and extensible.
It is still in a stage where the change of design principle is doable,
and, as I look at it, highly desirable.
Will I introduce purely virtual base classes (interfaces) or templates?
I am aware of the basics regarding the template option:
less indirection, better performance, more compiling
but
no late binding, and so on.
The stl does not use much (or none?) inheritance, and boost doesn't either.
But I think those are aimed to be really small basic tools that are used every
2 lines of code by the programmer.
I consider the inheritance and late binding approach to be more sensible for
plug-in style of big pieces of code and functionality that should be interchangeable,
updateable etc. after deployment or even during runtime.
Well my scenario lies somewhat inbetween.
I dont need to exchange pieces of code on the fly at runtime, compile time is fine.
Usually it is also a very central and frequently used piece of functionality,
it is not logically seperatable into big blocks.
This lets me tend somewhat to the template solution.
To me it also looks somewhat cleaner.
Are there any big bad implications, are interfaces still THE way
to go? When are they not?
Which complies more with standard c++ style?
I know this is bordering on subjective, but I am really interested in
some experiences. I don't own a copy of Scott Meyers effective C++
so I set my hopes on you guys :)
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…