Насколько я понимаю, термин " ссылочная прозрачность " действительно может применяться только к функциональному коду. Однако вызов метода для объекта в объектно-ориентированном коде может иметь аналогичное свойство: возвращаемое значение метода и состояние объекта после вызова метода зависят только от состояния объекта перед вызовом. и аргументы метода.
т.е. функциональная ссылочная прозрачность:
i = foo(n, m);
// return value depends only on n, m
ОО "ссылочная прозрачность":
i = obj.foo(n, m);
// return value, and subsequent state of obj, depends
// only on initial state of obj, n, m
Есть ли название для этого свойства?
Если состояние obj
не изменяется во время вызова на foo()
, то «объектно-ориентированный» стиль эквивалентен функциональной форме, если поддерживается перегрузка функции , поскольку она может быть переписана как:
i = foo(obj, n, m);
// return value depends only on obj, n, m
Тем не менее, состояние obj
довольно часто изменяется при вызове метода, поэтому я не уверен, поможет ли это анализу ...