Bagaimana cara menulis kode yang dapat dikelola dengan pemrograman fungsional?

14

Saya baru saja mulai dengan pemrograman fungsional (dengan JavaScript dan Node.js) dan dari tampilan hal-hal itu tampak seolah-olah kode yang saya tulis akan tumbuh menjadi neraka basis kode untuk dikelola, jika dibandingkan dengan bahasa pemrograman yang memiliki semacam paradigma berorientasi objek.

Dengan OOP saya terbiasa dengan praktik yang akan memastikan kode Anda mudah dikelola dan diperluas. Tetapi saya tidak yakin dengan konvensi serupa dengan pemrograman fungsional.

Dade
sumber
4
JavaScript adalah bahasa yang berorientasi objek, jadi teruskan dan gunakan keahlian OOP Anda menggunakan Node.js
Jonas
5
coba fungsi. Itu akan memecahkan hampir setiap masalah.
tp1
4
Berikut adalah sumber yang bagus untuk menjaga agar kode sumber simpul Anda tetap rapi dan rapi dan karenanya dapat dikelola: nodeguide.com/style.html
Daniel Bradley
2
Sejauh yang saya tahu, satu-satunya fitur pemrograman fungsional yang dimiliki JavaScript adalah lambdas (lebih tepatnya, fungsi tanpa nama) dan pemindahan fungsi. Jika Anda ingin mempelajari pemrograman fungsional, Anda mungkin harus melihat sesuatu seperti Haskell atau F # / OCaml atau Scala atau Lisp.
Rei Miyasaka

Jawaban:

8

Dalam prakteknya, basis kode fungsional yang besar masih perlu dibagi dalam beberapa jenis sistem struktural. Jika Anda merasa nyaman dalam OOP, kelas tetap menjadi elemen penataan alami. Anda berusaha untuk "objek fungsional": fungsi yang berhubungan secara konseptual ditempatkan bersama di dalam kelas. Tentu saja, Anda menghindari keadaan non-percakapan dan bergantung pada variabel instan.

Melampaui struktur, ada teknik tertentu, seperti aplikasi fungsi parsial, yang lebih disukai di dunia fungsional untuk ekstensi, rawatan, dan generalisasi. Namun, belajar mengenali peluang ini bisa sulit ketika bekerja dalam mode fungsional / objek hibrid. Secara pribadi, saya pikir itu ide yang baik untuk bekerja dalam mode hybrid tetapi untuk belajar dan bermain di lingkungan yang lebih murni, seperti yang disediakan oleh Haskell.

Larry OBrien
sumber
2

Bahasa pemrograman fungsional menikmati banyak konsep yang kuat untuk membangun kode berkualitas tinggi, misalnya: Fungsi yang diterapkan sebagian, komposisi fungsi (yang ini sangat kuat dan favorit saya), makro, fungsi urutan yang lebih tinggi. Dan jangan lupa struktur data yang tidak berubah.

Chiron
sumber
1

Daripada meninggalkan OOP untuk FP, coba tambahkan dengan beberapa pola FP. Kapan pun Anda perlu memproses koleksi adalah kandidat yang bagus dan menunjuk ke sekumpulan metode FP umum seperti peta, lipat dan kurangi. Lihatlah underscore.js dan backbone, kerangka kerja MVC yang banyak menggunakan yang lama.

sunwukung
sumber