Why people dislike global variables so much while I find them so convenient?

rempas rempas at tutanota.com
Wed Jan 26 09:10:58 UTC 2022


On Tuesday, 25 January 2022 at 14:29:32 UTC, Steven Schveighoffer 
wrote:
> That's not the reason. Global variables are hard to control and 
> review. That is, if a variable is global, how do you know it's 
> not misused? The point of not using global variables is to 
> reduce the surface area of the program that needs review to 
> ensure it's correctly used.

Yeah, I understand know how this can be very important with 
bigger and more complex apps where a lot of developers will work 
or with Library APIs.

> In some cases, they make sense, and in those cases, I'd 
> recommend at least guarding the direct access to the variable 
> through properties so you can control how it's used.

What do you mean "properties"? I suppose not struct/class 
properties right?

> 1. Declare the variables in a function, then run your 
> algorithms inside inner functions. They all now have access to 
> the variable. I'm surprised at how many complex problems and 
> APIs become super-straightforward when you start using local 
> functions (even templated ones).

That's actually a really great way of doing it but it will be a 
mess if you have the huge functions that I do. This will work 
great with small algorithms. Or you could use string enums to 
insert code in place. A lot of things to consider!

> 2. Enclose the data and methods in a struct, even if that 
> struct is a struct inside a function. This is a necessity if 
> you have mutually recursive functions, since a local function 
> cannot call another local function that hasn't been defined yet.
>
> -Steve

This is what I'll probably do. Not only because of the problem 
you mentioned but because it will allow my to use functions in 
separate files like I normally would!

Thanks a lot for your time man!


More information about the Digitalmars-d mailing list