SUBJ
Как ограничить доступ к глобальному состоянию, разрешив только определенным классам чтение/модификацию (типа friend class в c++) определенного состояния? Использовать менеджер глобального состояния?
К примеру, есть 10 глобальных переменных и 20 классов, которые обращаются к некоторым из них.
Ясно, что отказавшись от глобальных переменных, придется передавать их через пол-кода, причем в этом коде потом кто-то по ошибке возьмет, да и модифицирует переменную. В итоге будет тот еще спагетти-код.