Применимость функционального преобразования
Чисто функциональные преобразования применяются в самых разнообразных ситуациях.
Подход с использованием функциональных преобразований идеально подходит для запросов и управления структурированными данными, поэтому вполне соответствует технологиям LINQ. Но функциональные преобразования могут применяться гораздо шире, чем только в LINQ. Любой процесс, основной задачей которого является преобразование данных из одной формы в другую, может считаться применимым для функционального преобразования.
Этот подход можно использовать при решении многих задач, даже если на первый взгляд кажется, что он неприменим. Применение функциональных преобразований в сочетании с технологиями LINQ или без них должно рассматриваться при работе со следующими объектами.
Документы на основе XML. Имеющие правильный формат данные на любом диалекте языка XML могут быть легко подвергнуты функциональным преобразованиям. Для получения дополнительной информации см. Функциональное преобразование XML.
Другие структурированные форматы файлов. Большинство файлов, от Windows.ini до обычных текстовых документов, имеют определенную структуру, которую можно анализировать и преобразовывать.
Протоколы потоковых данных. Кодирование и декодирование данных в коммуникационных протоколах часто можно представить в виде простого функционального преобразования.
Данные RDBMS и OODBMS. Реляционные и объектно-ориентированные базы данных, как и XML, являются широко используемыми структурированными источниками данных.
Математические, статистические и научные решения. В этих областях происходит обработка больших наборов данных, чтобы пользователь мог представлять визуально, оценивать или действительно решить нетривиальные задачи.
Как описано в Оптимизация кода для получения чистых функций, использование чистых функций является примером функционального программирования. Кроме очевидных преимуществ чистых функций, их применение позволяет получить ценный опыт решения проблем с точки зрения применения функциональных преобразований. Такой подход может серьезно повлиять на стиль программирования и конструирования классов. Это особенно важно, если задача легко решается путем преобразования данных, как описано выше.
Безусловно, это не относится к теме данного учебника, но следует отметить, что проекты, разработанные с учетом возможностей функциональных преобразований, чаще всего бывают сосредоточены на применении в качестве действующих факторов процессов, а не объектов, а полученное в результате решение чаще всего бывает реализовано как ряд крупномасштабных преобразований, а не как изменения состояний отдельных объектов.
Следует также помнить, что C# и Visual Basic поддерживают как императивный, так и функциональный подход, поэтому в приложении целесообразнее всего сочетать элементы обоих стилей программирования.
См. также
Основные понятия
Введение в чисто функциональные преобразования