Why people dislike global variables so much while I find them so convenient?
rempas
rempas at tutanota.com
Wed Jan 26 08:07:10 UTC 2022
On Tuesday, 25 January 2022 at 14:20:28 UTC, jmh530 wrote:
> I just made use of globals in a non-D project at work.
> Basically, I was tasked with evaluating a few different options
> for how to do something. There was already an existing code
> base. For me to loop through the options at a high level would
> require passing these variables through to multiple functions
> and making more modifications to the code base than I had
> wanted to. Instead, I created some globals covering the
> different options so that I could get everything working in the
> functions that I actually needed to change and easily test what
> the results were with different options. When the final option
> was decided, I removed the globals and all code associated with
> the rejected options.
>
> In D, I could have used a __gshared enum* and then used static
> if on it to switch the code paths, which would be nicer than
> the language I was working in.
>
> In retrospect, an alternative could have been to create
> separate branches and then just delete the ones that didn't
> work out. The downside to that is that there was code that was
> used between the different options and as I was trying things
> out I may have changed code that all three would have used, so
> then I would have had to update multiple branches with the
> changes. I'm sure there is a way that git could handle that for
> me, but it might have been a little more work. For a bigger
> change than I was making, it might have been worth it to rely
> on git.
>
> * For instance:
> ```
> import std.stdio: writeln;
> enum X {A, B, C}
> __gshared enum X x = X.B;
>
> void foo() {
> static if (x == X.B)
> writeln(x);
> }
>
> void main() {
> foo();
> }
> ```
Thank you! The thing is that this will not work on me as I want
global variables that I will actually be able to mutate.
More information about the Digitalmars-d
mailing list