After several years of C++ I feel the language is extremely powerful for solving technical engineering problems, but doesn’t really welcome more general OO patterns, which are desperately needed in order to structure and maintain a very large code base, UI, knowledge base and associated AI. In search for patterns that help reduce clutter and verbosity (templates and meta-programming already helped), I’m pondering the extended use of Interfaces. So my question is:
According to the decades long experience of some Juce users here, is it good practice in C++ to make use of the ‘Interface’ pattern a lot?
Printable, Sortable, Transposable, Editable, Dragable, etc. come to mind. While interfaces nicely enforce a consistent naming and semantics across class trees (which is a huge plus in itself), I wonder if going down that path will really lead to more expressive and lean code in the long term.
Seeing it rarely used in the Juce library, what are the downsides?