Я понимаю, что термин " ссылочная прозрачность" действительно может быть применен только к функциональному коду. Однако вызов метода объекту в объектно-ориентированном коде может иметь аналогичное свойство, то есть возвращаемое значение метода и состояние объекта после вызова метода зависит только от состояния объекта перед вызовом, и аргументы метода.
то есть. функциональная ссылочная прозрачность:
i = foo(n, m);
// return value depends only on n, m
OO "ссылочная прозрачность":
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
можно изменить вызов метода, поэтому я не уверен, помогает ли это анализу...