• ValiantDust
    link
    fedilink
    7929 days ago

    But are you gonna return something for this method??? You said you’d return an integer, yet there is no return statement!

    • @[email protected]
      link
      fedilink
      1629 days ago

      This is why I always write my methods from bottom to top. This way I’ve always got a return statement and I use my variables before they are even declared.

  • @[email protected]
    link
    fedilink
    6329 days ago

    IDE is one thing, Go refuses to compile. Like calm down, I’m going to use it in a second. Just let me test the basics of my new method before I start using this variable.

    Or every time you add or remove a printf it refuses to compile until you remove that unused import. Please just fuck off.

    • @[email protected]
      link
      fedilink
      1629 days ago

      Yeah I think it’s trauma due to C/C++'s awful warning system, where you need a gazillion warnings for all the flaws in the language but because there are a gazillion of them and some are quite noisy and false positives prone, it’s extremely common to ignore them. Even worse, even the deadly no-brainer ones (e.g. not returning something from a function that says it will) tend to be off by default, which means it is common to release code that triggers some warnings.

      Finally C/C++ doesn’t have a good packaging story so you’ll pretty much always see warnings from third party code in your compilations, leading you to ignore warnings even more.

      Based on that, it’s very easy to see why the Go people said “no warnings!”. An unused variable should definitely be at least a warning so they have no choice but to make it an error.

      I think Rust has proven that it was the wrong decision though. When you have proper packaging support (as Go does), it’s trivial to suppress warnings in third party code, and so people don’t ignore warnings. Also it’s a modern language so you don’t need to warn for the mistakes the language made (like case fall through, octal literals) because hopefully you didn’t make any (or at least as many).

    • @[email protected]
      link
      fedilink
      11
      edit-2
      29 days ago

      VSCode with Go language support: removes unused variable on save “Fixed that compilation bug for ya, boss”

      • @[email protected]
        link
        fedilink
        429 days ago

        Like actually deletes them from the working copy? Or just removes them in the code sent to the compiler but they still appear in the editor?

  • @[email protected]
    link
    fedilink
    English
    3429 days ago

    Compiler/interpreter: Can’t find variable farfignewton.

    Earlier:

    Me: Declare variables near, far

    IDE: Oh! You mean farfignewton right? I found that in some completely unrelated library you didn’t write. Allow me complete that for you while you’re not paying attention.

    • @[email protected]
      link
      fedilink
      4
      edit-2
      8 days ago

      I try my best to make my IDEs follow the principal that I should be able to type without looking at the screen, but apparently IDEs are really invested in return accepting completions to the point it’s often not configurable even when every other key is.

    • Dojan
      link
      fedilink
      429 days ago

      Visual Studio: PROPERTY DOESN’T EXIST ON TYPE!! NOTHING EXISTS ANYMORE!!! REALITY HAS COLLAPSED!

      Me: What? I haven’t even touched that class, let me check.

      Visual Studio: Oops, nevermind, héhé 🙃

      • DacoTaco
        link
        fedilink
        228 days ago

        I swear to god this didnt used to be a problem few years ago. However im having that bug constantly now…

        • Dojan
          link
          fedilink
          128 days ago

          Yeah, I also feel like it’s fairly recent.

  • @[email protected]
    link
    fedilink
    829 days ago

    Me: <starts a heredoc>

    jetbrains: This heredoc goes on FOREVER!

    Me: I’m going to close it…

    jetbrains: <dies>

  • kamen
    link
    fedilink
    628 days ago

    Imagine lint running on format and your linter removing unused variables: you start typing, hit format by muscle memory before using the variable. Rinse and repeat.

  • @labsin
    link
    629 days ago

    I start writing the implementation and get the “variable not defined” error and then let the ide add the declaration. It’s less keys to press and misspell.

  • Dojan
    link
    fedilink
    429 days ago

    I recently started poking with Vue, For the most part when it comes to webapps I’ve mostly worked with React, Blazor, and a touch of Svelte. The linter is so aggressive. I start defining a method and it instantly goes “IT DOESN’T RETURN ANYTHING!!”

    Okay, thanks! I literally just defined the return type!

  • @[email protected]
    link
    fedilink
    329 days ago

    Word proccessors have had this figured out for ages, I wonder why it’s so hard to implement this QoL change for code

    • @[email protected]
      link
      fedilink
      629 days ago

      How do you mean? You can’t type a word without using it in a word processor. Once the word is typed out it’s been used. Variables need to be declared then used so 2 separate steps.

      • @[email protected]
        link
        fedilink
        228 days ago

        There’s no direct equivalent but word like won’t bother me about spelling or grammar until I’m done typing that part

      • Richard
        link
        fedilink
        English
        128 days ago

        What do you mean? Variables do not necessarily need to be used, you can allocate memory for some value and initialise it but then simply don’t do anything with it.

        • DacoTaco
          link
          fedilink
          228 days ago

          You can but compilers will optimise that away unless you tell it not to.

        • @[email protected]
          link
          fedilink
          128 days ago

          Yes you can but the little red squiggles show in your editor to warn you that it’s unused code. That’s what the whole post is about lol

  • @[email protected]
    link
    fedilink
    229 days ago

    I’m not a CS major but why exactly does having a variable or parameter that’s not used in C, C# and C++ throw a warning

    • @[email protected]
      link
      fedilink
      929 days ago

      It’s probably gonna be optimized out by the compiler. However, linters will mark it for you, since it suggests that you actually wanted to do something with that variable and forgot about it after declaration.

      … Or it can be removed to reduce visual noise once it’s not necessary anymore after refactoring.

    • @[email protected]
      link
      fedilink
      528 days ago

      Lets say you use a variable named abcd in your function. And a variable named abcb in a for loop inside the same function. But because reasons you mistakenly use abcd inside that loop and modify the wrong variable, so that your code sometimes doesnt work properly.

      It’s to prevent mistakes like that.

      A similar thing is to use const when the variable is not modified.

    • @[email protected]
      link
      fedilink
      228 days ago

      Because it’s code that literally doesn’t do anything. Some languages won’t even let you compile without special instructions.