Хорошо, давайте рассмотрим, почему глобалы считаются плохими. Это их непринужденная видимость. Глобальные переменные доступны для всего кода, для чтения и модификации. Конструкция, основанная на распространении глобалов, поражает структуру. Чтение и запись могут происходить откуда угодно. И хотя это может быть хорошо, когда вы впервые реализуете что-то (потому что вы знаете землю), это может быть катастрофическим из-за кода, который он поощряет. Вскоре вы получите спагетти отношений и взаимодействий.
Сказав это, слепая ненависть к глобалам также не оправдана. Я имею в виду, глобальность может быть относительной. Имя класса является глобальным в пространстве имен. Член класса является глобальным в пространстве имен, установленном классом. Таким образом, если кодовая база для класса становится достаточно большой, тот же аргумент, что и глобальные, может быть использован против членов класса. Фактически, пространства имен и классы, отчасти, являются механизмами для сдерживания этой болезни глобальности. Они (частично) являются механизмами для разграничения видимости и доступа.
Так что, на мой взгляд, глобальность не является проблемой. Это действительно о том, как это влияет на структуру.