Quote:
Imagine the complete program state as a graph, with actual data items as nodes and accessibility relationships as links between them. Now consider a "window" or subgraph on that graph, which is the set of items that some function actively works with. The number of edges leading outside of that subgraph is a measure of how encapsulated that subset of state really is. In object orientation, you recognize commonly occurring subgraphs in the program state and wrap those up inside objects, give them interfaces, and call them "classes."
A global variable is like a node in this graph that has an edge to every other node. It inherently breaks encapsulation and defies attempts to identify useful class abstractions.
I like this and the 'Lake ' post from MK27, lovely analogies and I hope you benefit from this insight to the arguments posted