Unused variables
Unused variables
Unused variables
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.
near, far
The obvious autocomplete is , wherever you are
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.
But are you gonna return something for this method??? You said you'd return an integer, yet there is no return statement!
and it had better be an integer! it had better be an integer, motherfucker!!
Well yea... If you write "return
<object of some other type>
" that is actually wrong, as opposed to just not having gotten around to filling it in yetImagine 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.
Me:
<starts a heredoc>
jetbrains: This heredoc goes on FOREVER!
Me: I'm going to close it..
jetbrains:
<dies>
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!
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
Word proccessors have had this figured out for ages, I wonder why it's so hard to implement this QoL change for code
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.
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.
VSCode with Go language support: removes unused variable on save "Fixed that compilation bug for ya, boss"
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?
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).