This essay says that inheritance is harmful and if possible you should “ban inheritance completely”. You see these arguments a lot, as well as things like “prefer composition to inheritance”. A lot of these arguments argue that in practice inheritance has problems. But they don’t preclude inheritance working in another context, maybe with a better language syntax. And it doesn’t explain why inheritance became so popular in the first place. I want to explore what’s fundamentally challenging about inheritance and why we all use it anyway.

  • okamiueru@lemmy.world
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    8 months ago

    I see. Thanks! Looking at wikipedia, it sure seems to be a case of an overloaded term.

    I don’t generally use the first and second one you mention, because it’s in the “common sense / obvious” realm, and I don’t like to use complicated sounding jargon for simple concepts. For example:

    // Good:
    MyClass(Resource(configValue))
    
    // Bad:
    MyClass(configValue) // which insides does something a'la resource = Resource(configValue))
    

    If this is an example of dependency inversion… hm, I suppose. I suppose having a word for it is fine. “Inversion” also doesn’t make much sense if you start out thinking that’s what makes sense to begin with. As for the “dependency injection”? Sounds complicated, but really isn’t. Not sure who these kinds of terms are supposed to help.

    As for DI frameworks using the word injection. I’ve always thought made sense. Because the connotations of injections feel applicable. No one looks forward to “an injection”, and aside from the obvious, its usually done by someone else, and you might not be aware of the details of what happened, and you have no good way of figuring out what it was, or why you suddenly start feeling weird.