• SpaceNoodle@lemmy.world
      link
      fedilink
      arrow-up
      26
      ·
      1 year ago

      Damn, you beat me to it.

      It’s common enough that it’s supported like a comment by numerous syntax highlighting schemes, and has the added benefits of guaranteeing that the code won’t be compiled as well as encapsulating any pre-existing block comments. Conversely, if (false) is total garbage.

        • AlmightySnoo 🐢🇮🇱🇺🇦@lemmy.world
          link
          fedilink
          arrow-up
          8
          ·
          edit-2
          1 year ago

          A simple if (false) will get optimized out by any modern C or C++ compiler with optimizations on, but the problem is that the compiler will still parse and spend time on what’s inside the if-block and it has to be legal code, whereas with the #if 0 trick the whole thing gets yeeted away by the preprocessor before even the compiler gets to look at it regardless of whether that block contains errors or not, it’s literally just a string manipulation.

          • Duralf@lemmy.world
            link
            fedilink
            arrow-up
            10
            ·
            1 year ago

            I think you missed the whole point of my comment 😂. Regardless, the time spent compiling a small snippet of code is completely negligible. In the end, both #if 0 and if (false) have their complimentary uses.

            • Yeah, but I still think if (false) is silly because it adds an artificial constraint which is to make sure the disabled parts always compile even when you’re not using them. The equivalent of that would be having to check that all the revisions of a single source file compile against your current codebase.

              • Fushuan [he/him]@lemm.ee
                link
                fedilink
                English
                arrow-up
                3
                ·
                1 year ago

                If(false) works in interpreted languages, the other one doesn’t. It’s stupid either way, that’s what version control is for, but if we are doing the stupidness anyway, you can’t use preprocessor flags in many languages because shit doesn’t get compiled.

      • KeenFlame@feddit.nu
        link
        fedilink
        arrow-up
        2
        ·
        1 year ago

        My linter always skips preprocessors not set to build, in c# at least, greys it all out unfortunately

    • Magister@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      this is what I’m doing too, so at least it’s not compiled and better than a /* */ as you can keep all the code intact in your #if 0

  • xmunk@sh.itjust.works
    link
    fedilink
    arrow-up
    11
    ·
    1 year ago

    If you’re in a language that supports it, please don’t use if (false) use if ($disallowAllUsers = false && $whateverTheRealConditionIs)

  • katy ✨
    link
    fedilink
    arrow-up
    8
    ·
    1 year ago

    bonus points if you use a different variable every file so they have to go through and change every instance if they want to make changes

  • asudox@lemmy.world
    link
    fedilink
    arrow-up
    4
    ·
    edit-2
    1 year ago

    I don’t see the need for an if block or renaming the function and leaving it there. It is extra unnecessary work for the compiler. Comments are probably the best way. Might also copy the current file, put the original in some folder like “old”, and delete the old code inside the new copy.

    • dmrzl@programming.dev
      link
      fedilink
      arrow-up
      9
      ·
      edit-2
      1 year ago

      Comments are the worst as they are ignored by refactoring. That’s the reason if (false) is actually really good for temporarily disabled code.

    • frobeniusnorm@lemmy.world
      link
      fedilink
      arrow-up
      3
      ·
      1 year ago

      On a modern computer dead code analysis with constant folding should be nearly unnoticeable when compiling a large project