3 ms·
Except inheritance is the premature optimisation of interfaces. Inheritance forces you to define the world in terms of strict tree hierarchies, which is very e
by eddd-ddde 3y ago
Except inheritance is the premature optimisation of interfaces.
Inheritance forces you to define the world in terms of strict tree hierarchies, which is very easy to get wrong. You may even do a great job today, but tomorrow such properties don't hold anymore.
Regular composition allows the same functionality without making such strong assumptions on the data you are modelling.
- sameoldtune 3y agoArborescent vs rhizomatic approaches, to get philosophical.
- 082349872349872 3y agoUnfortunately Deleuze's The Fold has little to say about either awk or catamorphisms.
- dragonwriter 3y ago> Inheritance forces you to define the world in terms of strict tree hierarchies, No, it doesn’t. Inheritance is the outcome of deciding to model some part of the problem space with a tree hierarchy (that potentially intersects other such heirarchies). It doesn’t force you to do anything. I suppose if there was a methodology which forced you, as the only modeling method, to exclusively use single inheritance, that would force you to do what you describe, but…that’s not inheritance, that’s a bunch of weird things layered on top of it.
- eddd-ddde 3y agoIt may not force you directly, but I think it's safe to say that when a language focuses on inheritance (e.g. c++) it does not offer good alternatives (e.g. rust traits). This means that if you want features such as runtime polymorphism, you are _kinda_ forced into inheritance.
- EVa5I7bHFq9mnYK 3y agoTrue. Modelling the world as a tree oversimplifies it, as there are also lateral and even backwards dependencies, and at a sufficiently complex level abstractions start to leak all over, making it a mess. But at some low to medium level of complexity it might work.