Is it really tempting for people? They’ve given me too many headaches when I’ve had to reformat or add functionality to files.
Unless it’s a simple single use script that fit on the computer screen, I don’t feel like global variables would ever be tempting, unless it’s for constants.
I.e. you did use them, but learned the hard way why you shouldn’t.
Very likely OP is a student, or entry-level programmer, and is avoiding them because they were told to, and just haven’t done enough refactoring & debugging or worked on large enough code bases to ‘get’ it yet.
Well, if you’re writing something the user will be looking at and clicking on, you will probably want to have some sort of state management that is global.
Or if you’re writing something that seems really simple and it’s own thing at first but then SURPRISE it is part of the system and a bunch of other programmers have incorporated it into their stuff and the business analyst is inquiring if you could make it configurable and also add a bunch of functionality.
I also had to work with a system where configurations for user space were done as libraries setting global constants.
And then we changed it so everything had to be hastily redone so that suddenly every client didn’t have the same config.
Unironically: For in-house scripts and toolboxes where I want to set stuff like input directory, output directory etc. for the whole toolbox, and then just run the scripts. There are other easy solutions of course, but this makes it really quick and easy to just run the scripts when I need to.
Is it really tempting for people? They’ve given me too many headaches when I’ve had to reformat or add functionality to files.
Unless it’s a simple single use script that fit on the computer screen, I don’t feel like global variables would ever be tempting, unless it’s for constants.
I.e. you did use them, but learned the hard way why you shouldn’t.
Very likely OP is a student, or entry-level programmer, and is avoiding them because they were told to, and just haven’t done enough refactoring & debugging or worked on large enough code bases to ‘get’ it yet.
This community makes more sense when you realize the majority of users are CS students.
Hey, don’t you group me in with people who have had a small amount of real training!
Most people suck at software engineering.
Plus, there’s always the temptation to do it the shitty way and “fix it later” (which never happens).
You pay your technical debt. One way or another.
It’s way worse than any gangster.
Not if you leave the project soon enough. It’s like tech debt chicken.
Then, at your new job, you see garbage code and wonder what dumbass would put global variables everywhere
You’re gonna see that even if you were pious at your own job. So you’re only wasting time.
That’s how this industry works ;)
Well, if you’re writing something the user will be looking at and clicking on, you will probably want to have some sort of state management that is global.
Or if you’re writing something that seems really simple and it’s own thing at first but then SURPRISE it is part of the system and a bunch of other programmers have incorporated it into their stuff and the business analyst is inquiring if you could make it configurable and also add a bunch of functionality.
I also had to work with a system where configurations for user space were done as libraries setting global constants. And then we changed it so everything had to be hastily redone so that suddenly every client didn’t have the same config.
I don’t get it either. Why would you ever feel the need for them to begin with?
Unironically: For in-house scripts and toolboxes where I want to set stuff like input directory, output directory etc. for the whole toolbox, and then just run the scripts. There are other easy solutions of course, but this makes it really quick and easy to just run the scripts when I need to.
But those would be constants, not variables.