• @PetDinosaurs
    link
    -221 year ago

    Which language are we talking here? Cpp? Because typeof hasn’t ever seemed useful to me in how I use cpp or how I have ever really used a language. I also remember it being criticized in java class more than 20 years ago when OOP was solely preached, even for scientific people like me.

    • mozingo
      link
      English
      361 year ago

      This sure looks like C#. I use typeof every once in a while when I want to check that the type of a reference is a specific type and not a parent or derived type. But yea, really not that often.

      • @PetDinosaurs
        link
        91 year ago

        It looks exactly like c++ and c# and java and probably others.

        • mozingo
          link
          English
          101 year ago

          But neither c++ or Java have typeof

        • @FooBarrington
          link
          21 year ago

          Typescript! Though it’s less useful, since the Typescript types aren’t available at runtime, so you’ll just get object for non-primitive values.

        • @LapidistCubed
          link
          11 year ago

          Probably because Java and C# take much inspiration from C++. They aren’t called “C-based” languages for nothing 😉

      • r00ty
        link
        fedilink
        31 year ago

        Yeah in C# it has quite a few uses.

        I’m working on a background fun project where there’s a base class that is for olde style CPU emulation. Where you can derive a class from the base class and essentially design 8bit style CPUs.

        I have a separate class as a generic Assembler that will work with any of the created CPUs. But, to be able to do that I need to be able to get information about instructions, arguments, opcodes, registers etc from the derived class.

        So the assembler is instantiated with Assembler\ and then it uses typeof to instantiate the actual CPU class being used to get all the information.

        So, that’s just an example of when you’d use something like this.

        • @[email protected]
          link
          fedilink
          English
          51 year ago

          I have used typeof(T) inside the generic class, so fx a function inside the class Pie where T can be refered. But out of context, if you were to call typeof(T) inside Program.cs’s main function, it would not work.

        • Kogasa
          link
          fedilink
          1
          edit-2
          1 year ago

          I don’t get what you mean. You can define class Pie and instantiate it with the type argument Pie.

          Huh, maybe I don’t get it because Lemmy is literally erasing angle brackets from our messages. Not just “not rendering.” It’s removing them entirely. There should be four angle brackets in the first line of this comment…

      • @mordack550
        link
        161 year ago

        Your assumption that “using reflection means the code is wrong” seems a bit extreme, at least in .Net. Every time you interact with types, you use reflection. Xml and Json serialization/deserialization uses reflection, and also Entity Framework. If you use mocking in test you are using reflection.

        We have an excel export functionality on our sites that uses reflection because we can write 1 function and export any types we want, thanks to reflection.

          • A good sense of “code smell” is one of the most valuable programming skills. I think your “probably” is justified: if you’re doing X, you should look twice at how you’re doing it. Maybe it’s right, but usually it’s not, so it’s worth a pause and a thought.

            • dzervas
              link
              11 year ago

              huh, you’re right! I’m trained on a different kind of code. In C# in particular, which I use mostly to do sneaky stuff (patch/inject runtime code to, um, “fix” it) and when I see a project that it’s too clean it smells

              I also see python code (I code regular stuff in it) that could be written much more cleanly using monkey-patching

        • Kogasa
          link
          fedilink
          21 year ago

          Modern .NET is reducing dependence on reflection. System.Text.JSON and other core libraries have leveraged source generation to produce AOT + trim friendly, reflection free code. But yeah, it’s not a taboo like say dynamic, it’s perfectly normal to use reflection in idiomatic C# code.

      • @[email protected]
        link
        fedilink
        51 year ago

        Hm, I’m currently working on a project with a ton of runtime-configurable plug-ins and dependencies between them. All of that is held together with a copious amount of black QMetaObject magic. I had the same thought about it, but I’m not sure how you’d get similar functionality without reflection and not making it even more convoluted and fragile…

        • @[email protected]
          link
          fedilink
          31 year ago

          Metaprogramming is extremely useful for long term code readability. What you’re doing is probably fine but we can’t really evaluate that without seeing the actual code.

          • Kogasa
            link
            fedilink
            21 year ago

            That’s why I stopped writing code and started writing ASTs and AST transformers that can be configured to emit libraries.