Suggestion: mark "@internal" virtual functions as final

the recent update caused some compiler errors in our codebase where we had some overrides of virtual functions (didn’t see the “@internal” header comment) that changed their return type.

if we are not supposed to override these internal functions, would it not be a good thing to mark these functions with the “final” specifier? or maybe “@internal” is just more of a “override at your own risk” warning?

-m

1 Like

Yeah, we generally use @internal to mark functions that can’t be made private for some reason, but which we don’t really expect/want users to be poking around at.

Sorry, we’re 100% against that. Quite the contrary. There is too much stuff already declared “final”, “private” etc. which hinders customization. Just yesterday I’ve implemented that using the mouse-wheel-Y scroll + holding ctrl changes the row-height for our list-boxes.

“mouseWheelMove” is commented with “@internal” in ListBox.h

Or maybe I want to override “keyPressed” and add additional keys that should do something special?

Juce needs more customization and less magic values/behavior.

I’d rather fix a couple of new errors every release (which usually takes a whole ten minutes) than lose functionality so something is “cleaner”.

3 Likes