• pivot_root@lemmy.world
    link
    fedilink
    arrow-up
    3
    arrow-down
    2
    ·
    edit-2
    8 days ago

    I strongly prefer how interfaces are handled

    It’s better than Java, but they still chose to walk headfirst into the same trap that bites Java developers in the ass: associating interface implementations with the struct/class rather than the interface itself.

    When you have two interfaces that each require you to implement a function with the same name but a different signature, you’re in for a bad time featuring an abomination of wrapper types.

    Edit: Clarity.

    • Willem@kutsuya.dev
      link
      fedilink
      arrow-up
      8
      arrow-down
      1
      ·
      8 days ago

      On that last note, can’t you use the explicit interface implementation in C#?

      e.g.

      public class SampleClass : IControl, ISurface
      {
          void IControl.Paint()
          {
              System.Console.WriteLine("IControl.Paint");
          }
          void ISurface.Paint()
          {
              System.Console.WriteLine("ISurface.Paint");
          }
      }
      
      • pivot_root@lemmy.world
        link
        fedilink
        arrow-up
        2
        arrow-down
        1
        ·
        edit-2
        8 days ago

        Edit: I misread your comment as “like in C#” and wrote this as an answer to the non-existent question of “can’t you use explicit interfaces like in C#”

        I haven’t kept up with recent Java developments, but with Go, you’re out of luck. Interface implementations are completely implicit. You don’t even have an implements keyword.

        Edit: For Java, a cursory search suggests that they haven’t yet added explicit interfaces: https://stackoverflow.com/questions/19111090/does-java-support-explicit-interface-implementation-like-c

        • ඞmir@lemmy.ml
          link
          fedilink
          arrow-up
          2
          ·
          8 days ago

          He mentioned C#, which does let you explicitly choose to implement same-name functions of two interfaces with different code

          • pivot_root@lemmy.world
            link
            fedilink
            arrow-up
            3
            ·
            edit-2
            8 days ago

            For some reason, my brain inserted a “like” before “in C#”, and answered the question of “can’t you use explicit interfaces like in C#.”

    • TunaCowboy@lemmy.world
      link
      fedilink
      arrow-up
      3
      arrow-down
      4
      ·
      8 days ago

      just one more oop bro I swear

      Pure oopium. All oop ‘design patterns’ exist solely to overcome the inherent flaws of oop.

      • pivot_root@lemmy.world
        link
        fedilink
        arrow-up
        8
        arrow-down
        2
        ·
        edit-2
        8 days ago

        just one more oop bro I swear

        Didn’t understand my criticisms of Go and Java’s interfaces, or do you just enjoy LARPing as a senior programmer while living in a small world where the term “interface” strictly means object-oriented programming and not the broader idea of being a specification describing how systems can interact with each other?