Well said.
Here I am trying to wind people up and you're responding with thoughtful nuanced consideration.
You make some great points.
I'll add - for folks reading along - I do think a class is still almost always an anti-pattern, even with all the OOP class function and factory pattern stuff removed.
I also feel (as you referenced):
- Functions being forced to reside inside objects is just stupid.
- Factory patterns are horrible, because they mix config into program code, maximizing uncertainty when debugging
And also:
- Inheritance is almost always a worse idea than an interface.
- classes tend to have additional fancy tooling to make it easier to carry state data around - which is usually a bad idea
State data is a necessary evil in most programs.
I've found that most advanced class object
implementations treat program state data more like a pet than a threat.
Sorry for the long response - I know you don't need it - you know what kind of tool you're looking for.
I figure they extra detail above might provide food for thought for folks reading along who are surprised there's even contrasting opinions on classes.
(And I feel a little bad for not really posting anything very useful earlier in the thread.)
My recent experience with C# suggests you might have a much better time with it, than you think.
C#'s compile phases are nuanced and achieve surprisingly quick results, now.
If it's been awhile since you used C#, you could be happily surprised.