• Solemarc@lemmy.world
    link
    fedilink
    arrow-up
    2
    ·
    3 hours ago

    Same, I always remember this with interfaces and inheritance, shoehorned in BS where I’m only using 1 class anyway and talking to 1 other class what’s the point of this?

    After I graduated as a personal project i made a wiki for a game and I was reusing a lot of code, “huh a parent class would be nice here”.

    In my first Job, I don’t know who’s going to use this thing I’m building but these are the rules: proceeds to implement an interface.

    When I have to teach these concepts to juniors now, this is how I teach them: inheritance to avoid code duplication, interfaces to tell other people what they need to implement in order to use your stuff.

    I wonder why I wasn’t taught it that way. I remember looking at my projects that used this stuff thinking it was just messy rubbish. More importantly, I graduated not understanding this stuff…

    • pfm@scribe.disroot.org
      link
      fedilink
      arrow-up
      2
      ·
      57 minutes ago

      I wouldn’t say that inheritance is for avoiding code duplication. It should be used to express “is a” relationship. An example seen in one of my projects: a mixin with error-handling code for a REST service client used for more than one service has log messages tightly coupled to a particular service. That’s exactly because someone thought it was ok to reuse.

      In my opinion, inheritance makes sense when you can follow Liskov’s principle. Otherwise you should be careful.

    • Kache@lemm.ee
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      13 minutes ago

      inheritance to avoid code duplication

      What no, inheritance is not for code sharing

      Sound bite aside, inheritance is a higher level concept, and that it “shares code” is more of a side effect.

      The simple, plain, decoupled way to share code is the humble function call, i.e. static method in certain langs.