
PTC для программного обеспечения: премиальный перевод ИИ, единообразный для Вашего сайта и продукта
Вы разрабатываете программное обеспечение или мобильные приложения в дополнение к Вашему сайту на WordPress?
Функциональное программирование сегодня является горячей темой среди разработчиков, и не без причины. Версия 4.5 WPML стала масштабным проектом, в котором появилась возможность автоматического перевода Вашего сайта. Для нас это также был подходящий момент, чтобы перейти на функциональное программирование. Вот что мы узнали в процессе.
Вы, вероятно, слышали, что функциональное программирование делает Ваш код более читаемым и упрощает его тестирование. Но чтобы полностью освоить функциональное программирование, важно понимать связанные с ним концепции.
Начнем с того, что функциональное программирование — это парадигма программирования, в которой акцент делается на использовании функций для создания программного обеспечения и объединении функций для создания более сложных. Функциональное программирование делает код более декларативным по своей природе. Вы выражаете то, что хотите получить, а не прописываете последовательность инструкций, которые обновляют состояние программы.
Важно обратить внимание на используемые им функции — в частности, на чистые функции. Чистые функции получают и возвращают данные, но не имеют никаких других побочных эффектов. Это делает функции очень простыми для тестирования, потому что при передаче одних и тех же параметров Вы получаете один и тот же результат.
Проще говоря, в функциональном программировании результат зависит от входных данных.
WPML — это большой и сложный проект. До недавнего времени мы использовали объектно-ориентированное программирование (ООП), чтобы справляться с этой сложностью. Одной из главных проблем является написание тестового кода (модульных тестов) для всех наших проектов. При написании тестируемого кода нам нужно убедиться, что любые вносимые нами изменения не ломают существующий код.
Модульное тестирование кода ООП имеет свои пределы. Зависимости кода необходимо мокировать, чтобы классы можно было тестировать независимо друг от друга. В результате тесты получаются большими и сложными.
Считается, что основное внимание в функциональном программировании уделяется тому, «что решать». В отличие от него, объектно-ориентированное программирование использует подход «как решать». Учитывая это, казалось, что функциональное программирование может помочь нам преодолеть некоторые из наших трудностей.
Когда мы говорим о функциональном программировании, PHP — не первый язык, который приходит на ум, хотя он и позволяет внедрить функциональный стиль. Например, хуки и фильтры, которые позволяют расширять WordPress, используют функции для переопределения функциональности WordPress.
К сожалению, в PHP нет стандартной библиотеки для использования более функциональной парадигмы. Мы рассмотрели множество библиотек, но ни в одной не было именно того, что нам нужно для написания выразительного кода в функциональном стиле. Поэтому вместо этого мы решили написать собственную библиотеку. Мы черпали вдохновение из разных источников, но в основном из библиотек Javascript, которые показались нам более зрелыми.
Функциональное программирование имеет иной подход по сравнению с другими парадигмами, поэтому переход на парадигму функционального программирования — это действительно большой шаг. Он требует от Вас изменить свой образ мышления при написании кода и решении проблем. Требуется много практики, чтобы писать выразительный код, который будет понятным и лаконичным.
Мы определенно считаем, что да. Функциональное программирование имеет ряд особенностей, которые работают нам на пользу:
Но, конечно, ничто не идеально. Хотя функциональное программирование более лаконично и предсказуемо, у него есть недостатки, особенно если Вы с ним не знакомы:
Само собой разумеется, что популярность функционального программирования — это больше, чем просто тенденция. Благодаря своей природе функциональное программирование отлично подходит для таких задач, как машинное обучение и анализ данных. В результате компании всех размеров начали проявлять интерес к функциональному программированию или даже начинать переход на него. Это не значит, что Вы должны навсегда попрощаться с объектно-ориентированным программированием, но попробовать функциональное программирование стоит. Даже если Вы в итоге никогда не будете его использовать, скорее всего, Вы повысите свой уровень как разработчик.
Если Вы хотите узнать больше, мы предлагаем начать с серии статей в блоге Composing Software.
Как только Вы будете готовы погрузиться глубже, взгляните на репозиторий нашего проекта FP.
Мы всегда ищем выдающихся разработчиков в нашу команду. Если это похоже на Вас, не ждите больше — подайте заявку сегодня.