Когда я прошел первый курс программирования в университете, нас научили тому, что глобальные переменные были злыми, и их следует избегать любой ценой (так как вы можете быстро разработать сбивающий с толку и не поддающийся контролю код). В следующем году нам учили объектно-ориентированное программирование и как создавать модульный код с использованием классов.
Я нахожу, что всякий раз, когда я работаю с ООП, я использую личные переменные моих классов как глобальные переменные, т.е. они могут (и) считываться и модифицироваться любой функцией внутри класса. На самом деле это не сидит прямо со мной, поскольку, как представляется, они вводят те же проблемы, что и глобальные переменные в таких языках, как C.
Итак, я думаю, мой вопрос: как мне перестать писать классы с "глобальными" переменными? Было бы разумнее притворяться, что я пишу на функциональном языке? Под этим я подразумеваю, что все функции принимают параметры и возвращают значения вместо прямой модификации переменных класса. Если мне нужно установить любые поля, я могу просто взять вывод функции и назначить ее вместо того, чтобы функция выполняла ее напрямую. Похоже, что он может сделать более удобный код, по крайней мере для более крупных классов. Какая распространенная практика?