• @pivot_root@lemmy.world
    link
    fedilink
    1
    edit-2
    14 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
      714 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
        1
        edit-2
        14 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
          link
          fedilink
          214 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
            3
            edit-2
            14 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
      link
      fedilink
      -114 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
        7
        edit-2
        14 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?