Как рекомендации по функциональному программированию для статических методов влияют на тестируемость?

Чем больше я погружаюсь в функциональное программирование, тем больше читаю рекомендацию отдавать предпочтение статическим методам нестатическим. Вы можете прочитать об этой рекомендации, например, в этой книге:

http://www.amazon.de/Functional-Programming-Techniques-Projects-Programmer/dp/0470744588

Конечно, это имеет смысл, если вы задумаетесь о функциональная чистота. Там стоит статическая функция и говорит: «Мне не нужно никакого состояния!»

Однако как это влияет на тестируемость? Я имею в виду, разве система с большим количеством статических методов не становится проблемой для тестирования (поскольку статические методы сложно имитировать)? Или макеты играют второстепенную роль в функциональном программировании, и если да, то почему?

РЕДАКТИРОВАТЬ

Поскольку есть сомнения, действительно ли книга дает такую ​​рекомендацию. Процитирую еще немного. Я надеюсь, что это нормально для Оливера Штурма.

Используйте статические методы

Статические методы - одна из основных идей, которую стоит рассматривать в качестве общего руководства. Его поддерживают многие объектно-ориентированные программисты, и с функциональной точки зрения функции большую часть времени можно сделать статическими. Любую чистую функцию можно сделать статической. (...)

Некоторые могут возразить, что идея постоянной передачи всех параметров означает, что вы не используете идеи объектной ориентации в той мере, в какой вы могли бы. На самом деле это может быть правдой, но, возможно, это связано с тем, что концепции объектной ориентации не уделяют так много внимания вопросам параллельного выполнения, как следовало бы. (...)

Наконец, руководство по рекомендую: когда вы написали метод, который не требует доступа к какому-либо полю в классе, в котором он находится, сделайте его статическим!

Между прочим, до сих пор были хорошие ответы. Спасибо за это!

13
задан Matt Fenwick 29 November 2011 в 15:47
поделиться