Может ли использование постоянной глобальной переменной полностью остановить проблему «побочных эффектов»?

Я знаю, что цель функционального программирования (FP) состоит в том, чтобы запретить «побочные эффекты», которые традиционно появляются в объектно-ориентированных императивных языках из-за использования глобальных переменных (например).

Однако в языках ООП (не FP) могут ли «побочные эффекты» исчезнуть, если использовать глобальную переменную, которая является постоянной (поэтому ее значение никогда не изменится)?


person mts396    schedule 26.11.2017    source источник
comment
Побочные эффекты, связанные с этой глобальной переменной, могут иметь место, да.   -  person Oliver Charlesworth    schedule 26.11.2017


Ответы (1)


Не уверен, что вы подразумеваете под «глобальной переменной», но похоже, что ответ «Нет».

Более важно, являются ли переменные изменяемыми или неизменяемыми. Это означает, что если вы отправите какой-либо класс в функцию, вы можете быть уверены, что он не изменится.

Теперь это также зависит от того, что такое «побочные эффекты», которые не имеют ничего общего с изменчивостью. например, вы можете отправить неизменяемый экземпляр в метод, вы не собираетесь менять момент, но вы собираетесь выполнять какую-то другую операцию, например, добавлять/удалять записи на основе этого экземпляра или создавать/удалять файлы в FS

person Mzf    schedule 26.11.2017
comment
Под «глобальной переменной» я подразумеваю переменную, имеющую глобальную область действия, которая доступна во всей программе; многие функции будут иметь доступ к этой переменной. - person mts396; 26.11.2017
comment
@ mts396 mts396, как я уже сказал в своем ответе, я не думаю, что это правильный вопрос, поскольку глобальная переменная является не более чем одним примером побочного эффекта. - person Mzf; 26.11.2017