Статические методы близки к чистым методам?
Исходя из требований чистого метода (метод, который не имеет побочных эффектов для внешнего мира), я обнаружил, что в большинстве случаев статические методы удовлетворяют этому требованию. Мы не можем получить доступ к переменным экземпляра в статическом методе, поэтому это значительно снижает вероятность побочных эффектов. Тогда в основном мы используем статические методы для выполнения некоторых вычислений на основе входных значений и просто возвращаем новое значение... входные данные редко видоизменяются.
Поэтому можно сказать, что статические методы являются достаточно хорошей заменой чистых методов.
1 ответ
Нет. Просто статичность не делает функцию чистой.
В чисто функциональном программировании результат функции должен зависеть только от их аргументов, независимо от глобального состояния. Статические функции могут легко получать доступ и изменять глобальное состояние.
Любая полезная чистая функция должна возвращать значение. Статические функции могут и часто объявляются недействительными, что не имеет смысла для чистой функции.
Чистые функции должны давать один и тот же результат для одного и того же ввода каждый раз. Любая статическая функция, использующая статический счетчик, может нарушить это правило.
В Ja va, например, объекты потоков являются функциональными по своей природе. Их функции, такие как filter(), не являются статичными, но поддерживают неизменность данных потока, создавая новый поток вместо изменения исходного объекта потока.
Тем не менее, статическим функциям легче не иметь побочных эффектов, поскольку у них меньше проблем, связанных с изменением, - собственное состояние экземпляра. Функции экземпляра должны воздерживаться от изменения как своего собственного состояния экземпляра, так и глобального статического состояния.