Earlier quoted context omitted.
10K global variables sounds insane, until i realize "oh, huh, we have that too, we just call it _config_". Almost every place we would have a constant (tuning parameters, etc) we instead have a configurable value with the likely default declared in code, but all overridable in config. Managing config can be a hassle, but the number of times we've merely had to tweak a value rather than roll a new build pays for itsel…
I always interpreted the "10K global variables" to mean 10K directly accessible, heap-allocated symbols. It's a code reek. If you use a configuration object or other abstraction, the number of accessible variables may not change, but their scope and access method does. It's a matter of interpretation I guess, but I would not classify a wrapper object (like .Net's ConfigurationManager singleton) as "10K global variabl…
> Other egregious deviations from standard practice were the number of global variables in the system. (A variable is a location in memory that has a number in it. A global variable is any piece of software anywhere in the system can get to that number and read it or write it.)
However, that was from the article author explaining the testimony, and not the testimony itself. It's not totally clear whether the variables were writable.
I would have guessed they were statically allocated rather than heap allocated, but what really matters is whether they were `const` — and they probably weren't `const` because otherwise this testimony wouldn't have rung true:
> "And in practice, five, ten, okay, fine. 10,000, no, we’re done. It is not safe, and I don’t need to see all 10,000 global variables to know that that is a problem," Koopman testified.