Я вижу преимущества изменчивых по сравнению с неизменяемыми объектами, такими как неизменяемые объекты, которые устраняют много трудностей при устранении неполадок в многопоточном программировании из-за общего и записываемого состояния. Напротив, изменяемые объекты помогают иметь дело с идентичностью объекта, а не каждый раз создавать новую копию и, таким образом, также улучшают производительность и использование памяти, особенно для более крупных объектов.
Одна вещь, которую я пытаюсь понять, - это то, что может пойти не так, если у вас есть изменяемые объекты в контексте функционального программирования. Как один из моментов, которые мне сказали, заключается в том, что результат вызова функций в другом порядке не является детерминированным.
Я ищу реальный конкретный пример, где очень очевидно, что может пойти не так, используя изменяемый объект в программировании функций. В принципе, если это плохо, это плохо независимо от ОО или парадигмы функционального программирования, верно?
Я считаю, что ниже мое собственное утверждение само отвечает на этот вопрос. Но все же мне нужен пример, чтобы я мог чувствовать это более естественно.
ОО помогает управлять зависимостями и писать более простые и поддерживаемые программы с помощью таких инструментов, как инкапсуляция, полиморфизм и т. Д.
Функциональное программирование также имеет тот же мотив продвижения поддерживаемого кода, но с использованием стиля, который устраняет необходимость использования ОО-инструментов и методов - один из которых, я считаю, сводится к минимуму побочных эффектов, чистой функции и т. Д.