Печально известные языки функционального программирования, такие как Node, Python, Go, Rust, Haskell с оттенком парадигмы ООП, выводят разработку и дизайн на новый уровень. Традиционные сильно ориентированные на ООП языки, такие как Java, C#, вынуждены разветвлять свою среду выполнения, чтобы иметь функциональный стиль, такой как Groovy, JPython и т. д.

Давайте возьмем Python в качестве инструмента для обсуждения и поделимся своими мыслями о разработке Python. Python — красивый язык с плотной поддержкой сообщества, например StackOverflow, Gist, Libraries, frameworks и т. д. Наличие такого гибкого информационного контекста и простота разработки превращают использование языка в хладнокровную дискуссию.

Как антипаттерн, в прошлом я написал множество мусорных модулей Python без какой-либо функциональной примеси, и я считаю, что большинство моих ошибок вылупились из-за моего долгого путешествия с системой разработки C++/C#/Java. Тем не менее, мой вывод всегда работал во всех слоях, таких как модульные тестовые случаи, интеграционные тестовые случаи и в реальном времени. Но мне не хватало функциональной кишки Python.

Модель функционального программирования имеет различные арсеналы. Эффективное осмысление нашего решения через эти линзы создаст поразительные стробоскопы. Такие основы кодирования взращивают и влияют на людей.

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

Код чутье:

  • Декоратор
  • лямбда
  • Собственные операции DataStructure, такие как понимание списков, генераторы, Zip и т. д.
  • Указатели функций/ Карри функций
  • Обратный звонок/обещания

Дизайнерское чутье

  • Внедрение зависимости
  • Функциональное мышление, а не классовое/объектное мышление
  • Мыслите масштабно, а программируйте мало.
  • Закрытие
  • Думайте о бетоне и кодируйте абстракцией.
  • Перехватчики
  • Дайте больше мыслей о шаблонах проектирования поведения, а не о шаблонах проектирования Creational.
  • Шина событий и логика, управляемая событиями

Тестовое чутье

  • Тестируемый код — (проверка параметров функции, инициализация параметров, проверяемые исключения и т.д.).
  • Сравните абстракцию и конкретный поток кода.

Общее чутье

  • Не заставляйте себя использовать определенные шаблоны проектирования ООП, такие как Singleton.
  • Функциональная парадигма естественным образом сочетается с потоком исходного кода без сохранения состояния. Позвольте требованию иметь сущность с отслеживанием состояния.
  • Если в конкретном языке нет функциональной возможности, не пытайтесь ее использовать. Например,) Обратный вызов в Python.

Вывод

Это мое наблюдение и путь к превращению спонтанного функционального программирования в жесткую структуру.