Краткая версия: когда легче рассуждать о программе. Обычно случаи - это некий тип глобального состояния или статического ресурса, который широко используется.
Длинная версия: Том Хотин сказал: «с жутким действием на расстоянии» ... в этом и заключается проблема глобалов - вы должны знать, где он используется и как, или вы можете получить некоторые действительно странные и трудные для отслеживания ошибок. Местные жители - это не что иное, как стратегия уменьшения объема того, что программист должен понимать, чтобы рассуждать о программе.
Другая сторона проблемы с знанием того, где они используются, заключается в том, что вы можете получить дублирующиеся глобальные переменные - в этом случае все может стать действительно странным, так как большинство программ получает и устанавливает var1, в то время как в нескольких местах var2 используется для хранения. та же информация. Особенно, когда несколько человек работают над одним и тем же кодом. IDE могут быть полезны для поиска использования, снижающего стоимость глобальных переменных, но они ничего не делают для дубликатов.
Чем больше глобалов у вас есть, тем сложнее отслеживать, что с ними происходит. Их должно быть мало и далеко.