fp-pack, utilitas fungsional TypeScript berbasis Pipe yang mudah dipakai dalam praktik tim
(github.com/superlucky84)1. Latar belakang – mengapa saya membuatnya
Saya rasa setiap orang bisa memiliki nilai yang dianggap penting dalam pemrograman fungsional secara berbeda-beda.
Sebagian orang mungkin lebih mementingkan konsistensi teoretis, dan sebagian lainnya mungkin lebih mengutamakan konsistensi abstraksi.
Di antara semuanya itu, saya secara khusus selalu merasa bahwa
kemampuan untuk melihat alur data secara deklaratif dalam sekali pandang melalui pipe
merupakan keunggulan terbesar dari pemrograman fungsional.
Terutama di lingkungan seperti JavaScript, tempat kode mudah menjadi kompleks,
struktur yang terlihat jelas tentang dari mana data datang dan ke mana data mengalir
menurut saya menjadi semakin penting dalam pekerjaan nyata.
Namun ketika mencoba menerapkan pendekatan ini
ke pekerjaan tim yang anggotanya memiliki tingkat pemahaman pemrograman yang berbeda-beda,
sering kali kita berhadapan dengan batasan yang sangat nyata.
Dalam proses menerapkan pola fungsional,
nilai makin lama makin terbungkus dalam struktur yang terabstraksi,
dan makin banyak momen ketika kita harus memahami aturan tersendiri di setiap tahap perantara,
sehingga "keterbacaan alur keseluruhan pipeline" yang justru saya anggap penting
beberapa kali terasa menjadi kabur.
Belakangan ini, seiring alat bantu pembuatan kode makin canggih,
saya juga semakin sering melihat kasus ketika desain tanpa sengaja menjadi terlalu kompleks.
Karena itu, di fp-pack saya secara sadar memilih
struktur yang mendorong baik manusia maupun alat untuk menulis pipeline sesederhana mungkin.
Berdasarkan pengalaman-pengalaman ini,
fp-pack adalah proyek pribadi yang dibuat dengan memprioritaskan
bukan kelengkapan teoretis, melainkan
keterbacaan berbasis Pipe yang dapat dipertahankan secara berkelanjutan dalam lingkungan tim.
Agar penanganan efek samping dalam pemrograman fungsional tidak terbatas hanya pada orang-orang yang akrab dengan teori tertentu,
saya juga memperkenalkan pendekatan penanganan Side Effect yang eksperimental dan ditafsirkan ulang dengan pola yang mudah dipahami
(panduan terkait 👉 https://superlucky84.github.io/fp-pack/#/ko/guide/side-effect-guide).
2. Prinsip inti
-
Berpusat pada Plain Value
Di dalam pipeline, nilai tidak dibungkus secara tidak perlu,
dan Plain Object / Plain Value dipertahankan apa adanya
agar pelacakan alur dan debugging terasa intuitif. -
Pemisahan Side Effect secara eksplisit
Dirancang agar pipeline khusus yang terpisah digunakan
hanya ketika diperlukan penghentian (Early Exit) atau penanganan pengecualian. -
Kurva belajar rendah
Alih-alih memperkenalkan konsep baru,
susunannya berfokus pada pola penggunaanpipe,pipeAsyncyang sudah akrab
agar mudah dibagikan dan digunakan dalam tim. -
Keamanan tipe
Dengan memanfaatkan TypeScript,
ketidakcocokan tipe di tengah pipeline dapat diperiksa saat compile time.
3. Penutup
Tanpa harus mempelajari konsep-konsep rumit yang baru,
saya berharap ini bisa menjadi salah satu pilihan bagi mereka yang ingin
memanfaatkan secara alami dalam praktik kerja
keunggulan utama pemrograman fungsional di lingkungan JavaScript / TypeScript, yaitu
"kode yang membuat alur data mudah dibaca".
🔗 Dokumentasi (Documentation)
https://superlucky84.github.io/fp-pack/#/ko
🔗 GitHub
https://github.com/superlucky84/fp-pack
1 komentar
Saya membuat fp-pack dengan membayangkan pemrograman bernuansa pemikiran fungsional yang bisa dimanfaatkan secara alami bahkan oleh anggota tim dengan latar belakang yang beragam, termasuk developer pemula hingga menengah, tanpa harus dipaksa menyesuaikan diri dengan gaya atau cara berpikir tertentu, selama memahami fungsi,
pipe, dan kurang lebih currying.