Sebagai pengarang terlaris, saya menjemput anda untuk menerokai buku saya di Amazon. Jangan lupa ikuti saya di Medium dan tunjukkan sokongan anda. terima kasih! Sokongan anda bermakna dunia!
Pengaturcaraan berfungsi JavaScript telah merevolusikan cara kami mendekati organisasi kod dan penyelesaian masalah. Dengan menggunakan teknik ini, pembangun boleh mencipta aplikasi yang lebih boleh diselenggara, boleh diuji dan berskala. Mari terokai lapan konsep pengaturcaraan berfungsi yang berkuasa yang boleh meningkatkan pangkalan kod JavaScript anda dengan ketara.
Fungsi tulen membentuk asas pengaturcaraan berfungsi. Ini adalah fungsi yang secara konsisten mengembalikan output yang sama untuk input yang diberikan, tanpa mengubah suai keadaan luaran atau menyebabkan kesan sampingan. Fungsi tulen boleh diramal dan mudah untuk diuji, menjadikannya blok binaan yang ideal untuk aplikasi yang kompleks.
Pertimbangkan contoh fungsi tulen ini:
function addNumbers(a, b) { return a + b; }
Fungsi ini sentiasa mengembalikan jumlah dua hujahnya, tanpa menjejaskan mana-mana keadaan luaran. Sebaliknya, fungsi yang tidak tulen mungkin kelihatan seperti ini:
let total = 0; function addToTotal(value) { total += value; return total; }
Fungsi addToTotal mengubah suai jumlah pembolehubah luaran, menjadikannya tidak tulen dan lebih sukar untuk difikirkan.
Ketidakbolehubahan ialah satu lagi konsep penting dalam pengaturcaraan berfungsi. Daripada mengubah suai data secara langsung, kami membuat salinan baharu dengan perubahan yang dikehendaki. Pendekatan ini menghalang kesan sampingan yang tidak dijangka dan menjadikan kod kami lebih mudah diramal.
Berikut ialah contoh bekerja dengan data tidak berubah:
const originalArray = [1, 2, 3, 4, 5]; const newArray = [...originalArray, 6]; console.log(originalArray); // [1, 2, 3, 4, 5] console.log(newArray); // [1, 2, 3, 4, 5, 6]
Dalam kes ini, kami mencipta tatasusunan baharu dengan elemen tambahan dan bukannya mengubah suai tatasusunan asal.
Fungsi tertib tinggi ialah fungsi yang menerima fungsi lain sebagai argumen atau fungsi pengembalian. Mereka membolehkan abstraksi yang kuat dan penggunaan semula kod. Kaedah terbina dalam JavaScript seperti peta, penapis dan pengurangan adalah contoh terbaik bagi fungsi tertib tinggi.
Mari kita lihat fungsi tersuai tertib lebih tinggi:
function repeat(n, action) { for (let i = 0; i < n; i++) { action(i); } } repeat(3, console.log); // Output: // 0 // 1 // 2
Fungsi ulangan ini mengambil nombor dan fungsi sebagai argumen, melaksanakan fungsi itu berkali-kali.
Komposisi fungsi membolehkan kami menggabungkan berbilang fungsi untuk mencipta operasi yang lebih kompleks. Teknik ini membantu memecahkan masalah kompleks kepada bahagian yang lebih kecil dan lebih mudah diurus.
Berikut ialah contoh gubahan fungsi:
const double = x => x * 2; const square = x => x * x; const doubleAndSquare = x => square(double(x)); console.log(doubleAndSquare(3)); // 36
Kami juga boleh menggunakan fungsi karang untuk menjadikan proses ini lebih fleksibel:
const compose = (...fns) => x => fns.reduceRight((y, f) => f(y), x); const doubleAndSquare = compose(square, double); console.log(doubleAndSquare(3)); // 36
Kari ialah teknik yang mengubah fungsi dengan berbilang argumen kepada urutan fungsi, masing-masing mengambil satu hujah. Ini membolehkan aplikasi separa fungsi dan boleh membawa kepada lebih banyak kod yang boleh digunakan semula.
Berikut ialah contoh karipap:
function addNumbers(a, b) { return a + b; }
Rekursi ialah teknik yang berkuasa di mana fungsi memanggil dirinya sendiri untuk menyelesaikan masalah dengan memecahkannya kepada submasalah yang lebih kecil dan serupa. Walaupun tidak eksklusif untuk pengaturcaraan berfungsi, rekursi selalunya diutamakan berbanding gelung imperatif dalam kod berfungsi.
Berikut ialah pelaksanaan rekursif bagi fungsi faktorial:
let total = 0; function addToTotal(value) { total += value; return total; }
Gaya bebas titik, juga dikenali sebagai pengaturcaraan tersirat, melibatkan fungsi penulisan tanpa menyebut hujahnya secara eksplisit. Gaya ini memfokuskan pada komposisi fungsi dan boleh membawa kepada kod yang lebih ringkas dan boleh dibaca.
Pertimbangkan contoh ini:
const originalArray = [1, 2, 3, 4, 5]; const newArray = [...originalArray, 6]; console.log(originalArray); // [1, 2, 3, 4, 5] console.log(newArray); // [1, 2, 3, 4, 5, 6]
Walaupun perbezaannya kelihatan halus, gaya bebas titik boleh menjadi sangat berguna apabila bekerja dengan fungsi tertib tinggi dan komposisi fungsi.
Fungsi dan monad ialah konsep lanjutan dalam pengaturcaraan berfungsi yang menyediakan cara untuk mengendalikan kesan sampingan dan operasi yang kompleks dengan cara yang berfungsi. Functor ialah jenis yang boleh dipetakan, manakala monad ialah jenis yang mentakrifkan cara aplikasi fungsi dan gubahan berfungsi untuk jenis tertentu itu.
Berikut ialah contoh mudah functor dalam JavaScript:
function repeat(n, action) { for (let i = 0; i < n; i++) { action(i); } } repeat(3, console.log); // Output: // 0 // 1 // 2
Dalam contoh ini, Maybe ialah functor yang membolehkan kami melakukan operasi dengan selamat pada nilai yang mungkin batal atau tidak ditentukan.
Sekarang kita telah membincangkan lapan teknik pengaturcaraan berfungsi ini, mari kita terokai cara ia boleh digunakan dalam senario dunia sebenar untuk mencipta kod yang lebih bersih dan boleh diselenggara.
Satu kes penggunaan biasa untuk pengaturcaraan berfungsi ialah transformasi data. Katakan kami mempunyai pelbagai objek pengguna dan kami ingin mengekstrak dan memformat maklumat khusus. Kita boleh menggunakan gabungan fungsi tulen, fungsi tertib lebih tinggi dan komposisi fungsi untuk mencapai ini:
const double = x => x * 2; const square = x => x * x; const doubleAndSquare = x => square(double(x)); console.log(doubleAndSquare(3)); // 36
Dalam contoh ini, kami telah menggunakan fungsi tulen (getName, huruf besar, tambahGreeting), komposisi fungsi (karang) dan fungsi tertib tinggi (peta) untuk mengubah data kami dengan cara yang bersih dan boleh digunakan semula.
Satu lagi aplikasi berkuasa pengaturcaraan berfungsi adalah dalam pengurusan negeri. Dengan menganggap keadaan sebagai tidak berubah dan menggunakan fungsi tulen untuk mengira keadaan baharu, kami boleh mencipta aplikasi yang lebih boleh diramal dan lebih mudah untuk nyahpepijat. Berikut ialah contoh mudah pembilang yang dilaksanakan menggunakan prinsip kefungsian:
const compose = (...fns) => x => fns.reduceRight((y, f) => f(y), x); const doubleAndSquare = compose(square, double); console.log(doubleAndSquare(3)); // 36
Corak kemas kini keadaan tidak berubah dan fungsi tulen untuk pengiraan keadaan baharu ini merupakan asas kepada banyak perpustakaan pengurusan negeri moden, seperti Redux.
Pengaturcaraan fungsian juga boleh memudahkan operasi tak segerak. Dengan menggunakan functors dan monad, kami boleh mengendalikan kod tak segerak dengan cara yang lebih boleh diramal dan boleh digubah. Berikut ialah contoh menggunakan monad Tugas mudah:
function addNumbers(a, b) { return a + b; }
Dalam contoh ini, kami telah mencipta monad Tugas yang membolehkan kami merantai operasi tak segerak dan mengendalikan ralat dengan cara yang berfungsi. Pendekatan ini boleh membawa kepada kod tak segerak yang lebih mudah dibaca dan boleh diselenggara berbanding dengan panggilan balik tradisional atau pendekatan berasaskan janji.
Teknik pengaturcaraan fungsional juga boleh digunakan untuk manipulasi DOM dan pengendalian acara dalam pembangunan bahagian hadapan. Dengan menganggap DOM sebagai struktur data tidak berubah dan menggunakan fungsi tulen untuk mengira keadaan DOM baharu, kami boleh mencipta kod UI yang lebih boleh diramal dan lebih mudah untuk diuji.
Berikut ialah contoh mudah pendekatan berfungsi untuk mengemas kini kaunter dalam DOM:
let total = 0; function addToTotal(value) { total += value; return total; }
Dalam contoh ini, kami telah menggunakan fungsi tulen untuk mengemas kini keadaan dan memaparkan UI, menjadikan kod kami lebih mudah diramal dan lebih mudah untuk diuji.
Teknik pengaturcaraan fungsional juga boleh digunakan untuk pengendalian ralat. Daripada membuang dan menangkap pengecualian, yang boleh membawa kepada aliran kawalan yang tidak dapat diramalkan, kita boleh menggunakan fungsi seperti Sama ada atau Hasil untuk mewakili pengiraan yang mungkin gagal:
const originalArray = [1, 2, 3, 4, 5]; const newArray = [...originalArray, 6]; console.log(originalArray); // [1, 2, 3, 4, 5] console.log(newArray); // [1, 2, 3, 4, 5, 6]
Pendekatan ini membolehkan kami mengendalikan ralat dengan cara yang lebih boleh diramal dan boleh digubah, tanpa bergantung pada pengendalian pengecualian.
Kesimpulannya, teknik pengaturcaraan berfungsi menawarkan alat yang berkuasa untuk mencipta kod JavaScript yang lebih bersih dan boleh diselenggara. Dengan menerima konsep seperti fungsi tulen, kebolehubahan, fungsi tertib tinggi dan komposisi fungsi, kami boleh menulis kod yang lebih mudah difahami, diuji dan nyahpepijat. Konsep lanjutan seperti kari, rekursi, gaya bebas titik dan functors menyediakan lebih banyak cara untuk menstruktur kod kami untuk fleksibiliti maksimum dan kebolehgunaan semula.
Walaupun mungkin mengambil sedikit masa untuk menyesuaikan diri dengan paradigma pengaturcaraan berfungsi, faedah dari segi kualiti kod dan produktiviti pembangun adalah ketara. Apabila anda memasukkan teknik ini ke dalam projek JavaScript anda, anda mungkin akan mendapati bahawa kod anda menjadi lebih modular, lebih mudah untuk difikirkan dan kurang terdedah kepada pepijat. Perkara utama adalah untuk memulakan secara kecil-kecilan, memperkenalkan konsep berfungsi secara beransur-ansur ke dalam pangkalan kod anda dan membina teknik yang lebih maju apabila anda selesa dengan asasnya.
Ingat, pengaturcaraan berfungsi bukanlah cadangan semua-atau-tiada. Anda boleh mulakan dengan memperkenalkan fungsi tulen dan kebolehubahan ke dalam pangkalan kod sedia ada anda, dan secara beransur-ansur menggunakan teknik yang lebih maju mengikut kesesuaian anda. Matlamatnya ialah untuk menulis kod yang lebih bersih, lebih boleh diselenggara dan pengaturcaraan berfungsi menyediakan set alat yang berkuasa untuk mencapai matlamat tersebut.
101 Buku ialah syarikat penerbitan dipacu AI yang diasaskan bersama oleh pengarang Aarav Joshi. Dengan memanfaatkan teknologi AI termaju, kami memastikan kos penerbitan kami sangat rendah—sesetengah buku berharga serendah $4—menjadikan pengetahuan berkualiti boleh diakses oleh semua orang.
Lihat buku kami Kod Bersih Golang tersedia di Amazon.
Nantikan kemas kini dan berita menarik. Apabila membeli-belah untuk buku, cari Aarav Joshi untuk mencari lebih banyak tajuk kami. Gunakan pautan yang disediakan untuk menikmati diskaun istimewa!
Pastikan anda melihat ciptaan kami:
Pusat Pelabur | Pelabur Central Spanish | Pelabur Jerman Tengah | Hidup Pintar | Epos & Gema | Misteri Membingungkan | Hindutva | Pembangunan Elit | Sekolah JS
Tech Koala Insights | Dunia Epok & Gema | Medium Pusat Pelabur | Medium Misteri Membingungkan | Sains & Zaman Sederhana | Hindutva Moden
Atas ialah kandungan terperinci Teknik Pengaturcaraan Fungsional JavaScript untuk Kod yang Lebih Baik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!