Печально известные языки функционального программирования, такие как 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.
Вывод
Это мое наблюдение и путь к превращению спонтанного функционального программирования в жесткую структуру.