• kubica
    link
    fedilink
    995 months ago

    Put it in an if-else and it executes both blocks.

    • @[email protected]
      link
      fedilink
      English
      145 months ago

      Fun fact I learned today - you know how when there’s a compound conditional, the interpreter stops once the result is known? (Eg, if the left side of an and is false, it’s false so it doesn’t bother checking the second condition)

      Apparently, visual basic doesn’t do this thing every other language I know of does… It might be a debug only thing for the convenience of the depreciated ide I’m forced to use, but I did a null check && called a function on it if it’s not null, and it blew up

      I pride myself on my ability to change to a new programming language and make progress on day one, but vb is truly the most disgusting POS language I’ve ever seen. From syntax to jarring inconsistencies in language design, it’s just gross

      • @noli
        link
        25 months ago
        1. That’s behaviour that’s just part of language design. If you rely on it you should probably check how the language you’re using handles it.

        2. relying on that behaviour sounds a lot like “clever” (read unnecessarily unreadable) code

        • @[email protected]
          link
          fedilink
          English
          15 months ago

          Are you serious? It’s one of the most basic and common if statements that exist.

          If( foo != null && foo.isBar() )

          That’s what we’re talking about. Looking before you leap.

          I take issue with the whole “too clever” argument fundamentally (for a number of reasons), but this isn’t some fancy quality of life feature. This is as simple as it gets

            • @[email protected]
              link
              fedilink
              English
              15 months ago

              Scroll on down to the first common example there champ.

              If you really think that’s being “too clever” I don’t know what to tell you… A big reason I think that argument is bullshit is because writing simple code isn’t a goal (what does that even mean?) - readability is a big one, and breaking up every part of every conditional would just lead to unreadable spaghetti

              Also, take a look at the languages being discussed. This is a long settled question - every language I’ve ever used has this.

              Including VB, I found out it uses AndAlso…so gross

              • @noli
                link
                1
                edit-2
                5 months ago
                1. several languages that are still in use have eager evaluation.

                2. I’m a dumb programmer. The more I need to keep implicit behaviour in mind, the higher the probability I’m writing bugs. Short circuit evaluation is an optimization technique IMO and shouldn’t be relied upon for control flow.

                3. The aggressive tone you’re using is completely unnecessary and immature, so I’ll refrain from responding any further. Have a nice day.

                • @[email protected]
                  link
                  fedilink
                  English
                  15 months ago

                  You’re the one who started this by criticizing my knowledge and my coding practices, in response to me sharing one very specific example of why I believe VB is a bad language

                  I held off because I thought you must’ve misread it and we’d laugh and maybe talk about language design… But no, you confirmed you just came at me with a bad take extremely dismissively

                  If you want respect, try showing it.

      • @SpeakinTelnet
        link
        55 months ago

        Because everyone knows a function stops at the if-else. Nothing ever happens afterward.

        • @[email protected]
          link
          fedilink
          -7
          edit-2
          5 months ago

          You’re writing extremely bad code if that’s the case and you need to refactor. The point of a function is to return a value. Anything else is just there to waste cycles and make the code less readable. You should also never use else statements for arithmetic due to their massive relative overhead. Your processor can do multiple arithmetic operations in the time it takes to process one if statement, and don’t get me started on people who demand you use nested if even though switch statements are way faster and leagues more readable.

          • @[email protected]
            link
            fedilink
            85 months ago

            Who’s suggesting that people are using if statements for arithmetic?

            The only time that you can feasibly replace an if statement with arithmetic is if it’s a boolean, but frankly that’s an edge case… Also if you’re not writing in rust or c or whatever then don’t worry as the interpreter will run a huge amount of branches for every line of code (which is what all your nested ifs, switches, gotos, returns etc. will compile down to anyway)

          • @SpeakinTelnet
            link
            7
            edit-2
            5 months ago

            I disagree but you do you.

            Edit: dammit you edit your comment a lot for someone who claims to know how to write code properly.

            • @[email protected]
              link
              fedilink
              -8
              edit-2
              5 months ago

              Those who are the most wrong have the strongest conviction

              EDIT: I make a lot of edits because unlike you, I care about the quality and accuracy of what I write. You’re going to spend like an extra 10 minutes tops writing for something that will be read by thousands for years to come. It’s basic courtesy.

                • @[email protected]
                  link
                  fedilink
                  0
                  edit-2
                  5 months ago

                  Yeah i’m starting to remember why I quit. In any other industry toxic shit like this goes sinks to the bottom, not the top.

                  Like seriously, what were you hoping to accomplish with this one? The thread ended yesterday. That’s reddit tier douchery.

          • @[email protected]
            link
            fedilink
            English
            5
            edit-2
            5 months ago

            god forbid anyone do multiple non-nested if blocks one after another in the same function as the function does multiple different things or (horror of horrors) put an if-else inside a loop

            also unless your compiler is completely and utterly brain dead (as is the case with Python, Java, C#, and most other languages that only pretend to be compiled compile to bytecode) a switch and a series of elif statements will compile to the exact same sequence of machine instructions. you can check on godbolt.org if you don’t believe me.

            modern compilers are insanely smart. as an example, this loop counts the number of 1’s in the binary representation of a number:

                while (n)
                {
                    n = n & (n - 1);    // clear the least significant bit set
                    count++;
                }
            

            LLVM will recognize that this is what you are trying to do and emit a single POPCNT instruction on x86, eliminating the loop entirely.

            also how would you even use if statements for arithmetic at all? you aren’t thinking of that one joke isEven() function, are you?

      • @[email protected]
        link
        fedilink
        35 months ago

        It’s much more readable when you use else depending on the checks. You can still use return in an else block.

        def Allowed()

          if name == "Octopus1348": return True
        
          elif name == "Bobert": return True
        
          else:
                return "You are not allowed to use this script."
        

        print(Allowed())

        `

    • @mrkite
      link
      295 months ago

      Known to cause heisenbugs. They’re bugs that disappear when you try to measure them with a debugger or a printf.

  • Doc Avid Mornington
    link
    fedilink
    English
    305 months ago

    Weird. Booleanish isn’t a built-in, I’m pretty sure. I’d like to see the definition.

  • @[email protected]
    link
    fedilink
    255 months ago

    That gave me an idea: A variable that is only defined when observed by a debugger, otherwise it’s null.