От OO до функционального программирования на уровне 10 000 футов

Тщательно рассмотрите заявление и попытайтесь понять его сначала. Тогда войдите в свою встречу с вопросы, и самое главное, контекст .

7
задан sth 22 September 2009 в 15:19
поделиться

3 ответа

Нет, вы не ошиблись. И ООП, и функциональное программирование имеют свои преимущества и свои недостатки.

Разработчику нужно знать, как и когда использовать каждый стиль разработки. К счастью, C # поддерживает оба стиля разработки.

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

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

В большинстве случаев дело доходит до запаха или ощущения, что лучше всего, поскольку в разработке программного обеспечения в любом случае нет четких примеров, а опыт и практика часто являются лучшим судьей для данного выбора.

6
ответ дан 7 December 2019 в 03:18
поделиться

Если вам нужна скорость, вы можете рассмотреть используемые вами структуры данных. Dictionary <> в C # - это хеш-таблица, а SortedDictionary <> в C # - это двоичное дерево поиска.

И F #, и Haskell хорошо справляются с представлением древовидных структур данных. Возможно, вы захотите рассмотреть возможность использования более конкретной структуры данных по сравнению с теми, которые предоставляет C # по умолчанию.

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

2
ответ дан 7 December 2019 в 03:18
поделиться

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

Цитата 1. Статические словари - это плохо. Похоже, функция может иметь побочные эффекты.

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

Blockquote 3. Традиционные шаблоны объектно-ориентированного программирования, вероятно, не будут работать.

Шаблоны объектно-ориентированного программирования хорошо работают на языке объектно-ориентированных приложений, пытаясь втиснуть в объектно-ориентированные методы FP объектно-ориентированный язык создаст подробный и нестабильный код. Это очень похоже на попытку использовать отвертку с помощью молотка, конечно, это дает результат, но есть способы получше. Постарайтесь использовать свои инструменты наилучшим образом. Некоторые техники FP могут быть полезны, но полное игнорирование языка не приведет к созданию кода хорошего качества.

0
ответ дан 7 December 2019 в 03:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: