Як написати керований код за допомогою функціонального програмування?


14

Я щойно почав з функціонального програмування (з JavaScript і Node.js), і з вигляду речей це виглядає так, ніби код, який я пишу, перетворився б на одне пекло кодової бази для управління, порівняно з мовами програмування, які мають своєрідна об'єктно-орієнтована парадигма.

З OOP я знайомий з практикою, яка б гарантувала, що вашим кодом легко керувати та розширювати. Але я не впевнений у подібній умові з функціональним програмуванням.


4
JavaScript - це об'єктно-орієнтована мова, тому продовжуйте і використовуйте свої навички OOP, використовуючи Node.js
Jonas

5
спробуйте функції. Вони вирішать майже кожну проблему.
tp1

4
Ось чудовий ресурс для збереження вихідного коду вашого вузла акуратним та охайним, а тому керованим: nodeguide.com/style.html
Daniel Bradley

2
Наскільки мені відомо, єдиною функціональною функцією програмування JavaScript є лямбдаси (точніше, безіменні функції) та передача функцій. Якщо ви хочете навчитися функціональному програмуванню, вам, мабуть, слід заглянути в щось на зразок Haskell або F # / OCaml або Scala або Lisp.
Rei Miyasaka

Відповіді:


8

На практиці велику функціональну базу коду все ще потрібно буде розділити в якійсь структурній системі. Якщо вам зручно в OOP, класи залишаються природним елементом структурування. Ви прагнете до "функціональних об'єктів": концептуально пов'язані функції розміщуються разом у класі. Звичайно, ви уникаєте неконверсійного стану і покладаєтесь на змінні екземпляра.

Виходячи за межі структури, існують певні прийоми, такі як часткове застосування функцій, які є переважними у функціональному світі для розширення, ремонту та узагальнення. Однак навчитися розпізнавати ці можливості може бути складно при роботі в гібридному функціональному / об’єктному режимі. Особисто я вважаю, що це гарна ідея працювати в гібридному режимі, але вчитися та грати в більш чистому середовищі, наприклад, наданому Haskell.


2

Мови функціонального програмування користуються безліччю потужних концепцій для створення високоякісного коду, наприклад: Частково застосовані функції, склади функцій (ця дійсно потужна і моя улюблена), макроси, функції вищого порядку. І не забувати про незмінні структури даних.


1

Замість того, щоб відмовлятися від OOP для FP, спробуйте доповнити його деякими моделями FP. Будь-який час, коли вам потрібно обробити колекцію, є хорошим кандидатом і вказує на загальний набір методів FP, таких як карта, складання та зменшення. Погляньте на underscore.js та магістраль, структуру MVC, яка широко використовує колишній.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.