• PlusMinus@lemmy.world
    link
    fedilink
    arrow-up
    14
    ·
    10 days ago

    Nah, C# suffers from a lot of the same shit Java does. Needing everything to be a class is just no longer a good design choice (if it ever was). AOT support is still lacking. I don’t get, why it does not have typdefs. I think the solution / project structure is unnecessary and I could probably think of more stuff I dislike about C#. But imho, it still beats Java.

    Golang is my choice over C# any time. I strongly prefer how interfaces are handled and I actually like the error handling.

    • Serinus@lemmy.world
      link
      fedilink
      arrow-up
      16
      ·
      10 days ago

      Needing everything to be a class

      In 2015 they added scripting. If you’re making a real project, you should absolutely use classes. (It’s not that hard. Don’t do the Java shit.) But you can absolutely write one off scripts just fine.

      AOT support is still lacking.

      Publishing your app as Native AOT produces an app that’s self-contained and that has been ahead-of-time (AOT) compiled to native code. Source.

      • PlusMinus@lemmy.world
        link
        fedilink
        arrow-up
        5
        ·
        10 days ago

        I think you misunderstood my post. I am quite proficient with C#. I just think other languages do it better.

        AOT is not where it should be yet, because not all libraries have full stripping support.

    • pivot_root@lemmy.world
      link
      fedilink
      arrow-up
      3
      ·
      edit-2
      9 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
        ·
        9 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
          ·
          edit-2
          9 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
            ·
            9 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
              9 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
        ·
        9 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
          9
          ·
          edit-2
          9 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?