News for hackers. Stuff that matters.
Re:Value-Oriented Programming by throwawayjava on Friday August 31, 2018 @12:48PM (#17887016)
More importantly, this forces you to create an explicit interface for any code you'd like to reuse between implementations.

Inheritance is fragile for a lot of reasons (see e.g., fragile base class). But the most common failure modes all have the same thing in common: the error happens because a developer fails to realize that there's an implicit interface between two things in the object heirarchy.

Re:Value-Oriented Programming by sevensor on Friday August 31, 2018 @03:36PM (#17888165)
> there's an implicit interface between two things in the object heirarchy

I think the tendency to miss this is compounded by fuzzy thinking about class hierarchies. I've lost count of the times I've heard somebody talk about an object of a child class "talking to" an object of the parent class, when calling an inherited method. They think there's actually another object -- their mental model for inheritance is composition. Using pure interfaces helps to quash this kind of thinking.