• pfm@scribe.disroot.org
    link
    fedilink
    arrow-up
    3
    ·
    4 hours 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.

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

      You’re not wrong but I think when you’re teaching someone just having 1 parent and 1 child class makes for a bad example I generally prefer to use something with a lot of different children.

      My go-to is exporters. We have the exporter interface, the generic exporter, the accounting exporter and the payroll exporter, to explain it.

      At school, the only time I used inheritance was 1 parent (booking) and 1 child (luxury) this is a terrible example imo.