Why people dislike global variables so much while I find them so convenient?
rempas at tutanota.com
Wed Jan 26 11:22:55 UTC 2022
On Tuesday, 25 January 2022 at 21:34:57 UTC, Dukc wrote:
> Because purity is convenient. When I call a function, let's say
> `field.initializeUnit(12, 15)` it's so much nicer and tidier if
> I can rest assured it won't affect anything else than `field`,
> and if I know it acts the exact same way every time, when the
> arguments are similar.
> Now consider if `field` was a global variable. Okay,
> `initializeUnit(12, 15)` is shorter than
> `field.initializeUnit(12, 15)`. But I have to set the field I
> want to manipulate in advance, `theField = /*whatever*/`. And
> when reading code that acts like this, I do not know what
> affects what without peeking what each of the called functions
> do. Did the `initializeUnit` use `theField` or
> `thatOtherField`? With the pure version I can instantly see
> it's the `field` variable I'm using. The non-pure version is
> much uglier and harder to read after all, despite having a
> shorter argument list.
Yeah, of course. In your example, it is actually stupid to use a
global variable and it doesn't makes sense.
> If the argument lists get lengthy, it is sometimes worth to
> collect the argument sets into structs or classes that have
> most of the needed data in one place. You might also consider
> the `with` statement. But globals just plain blow.
Yep, like other said! I'm doing that right now! Thanks!
More information about the Digitalmars-d