Чем больше я погружаюсь в функциональное программирование, я прочитал рекомендацию о том, чтобы использовать статические методы в пользу нестатических. Вы можете прочитать эту рекомендацию в этой книге, например:
http://www.amazon.de/Functional-Programming-Techniques-Projects-Programmer/dp/0470744588
Конечно, это имеет смысл, если вы думаете о функциональной чистоте. Статическая функция стоит там и говорит: "Мне не нужно какое-либо состояние!"
Однако как это влияет на тестируемость? Я имею в виду, не так ли, что система с множеством статических методов становится больной для тестирования (поскольку статические методы трудно издеваться)? Или макеты играют второстепенную роль в функциональном программировании, и если да: почему?
ИЗМЕНИТЬ
Так как есть сомнения, действительно ли книга делает эту рекомендацию. Я приведу немного больше. Надеюсь, это хорошо для Оливера Штурма.
Использовать статические методы
Статические методы - одна из основных идей, которые следует рассматривать в качестве общего руководства. Он поддерживается многими объектно-ориентированными программистами, и с функциональной точки зрения функции могут выполняться чаще всего в большинстве случаев. Любая чистая функция может быть сделана статической. (...)
Некоторые могут утверждать, что идея всегда проходить по всем параметрам означает, что вы не используете идеи объектной ориентации столько, сколько сможете. На самом деле это может быть правдой, но, возможно, это связано с тем, что концепции объектной ориентации не уделяют столько внимания вопросам параллельного выполнения, как должны. (...)
Наконец, рекомендуется рекомендовать: когда вы написали метод, который не требует доступа к любому полю в классе, в котором он живет, сделайте его статическим!
Кстати, до сих пор были хорошие ответы. Спасибо за это!