ReactJS #26: Refaktorisasi dan Struktur Folder yang Rapi
Biar Gampang Dicari
Halo, petugas kebersihan kode! 🧹
Setelah sekian lama menulis kode, proyek React-mu mungkin mulai berantakan. Komponen bertumpuk dalam satu file, folder campur aduk, dan kamu mulai bingung mencari sesuatu. Ibarat kamar yang penuh mainan berserakan, sulit menemukan barang yang kamu cari. Nah, sekarang saatnya kita membereskan kamar alias refaktorisasi dan mengatur struktur folder dengan rapi.
🔍 Mengapa Refaktorisasi Penting?
Refaktorisasi artinya mengubah kode agar lebih baik tanpa mengubah fungsinya. Manfaatnya:
- Mudah dibaca dan dipahami: Kode yang rapi seperti buku cerita yang jelas.
- Mudah dicari: Kamu tahu di mana meletakkan file baru dan di mana mencari file lama.
- Mudah diperbaiki: Jika ada bug, kamu bisa langsung ke lokasi yang tepat.
- Mudah dikerjakan tim: Orang lain (atau kamu sendiri di masa depan) tidak akan bingung.
- Mudah diuji: Kode yang terpisah lebih gampang diuji.
📁 Struktur Folder yang Direkomendasikan
Ada dua pendekatan populer dalam mengatur folder React: grouping by file type (mengelompokkan berdasarkan jenis file) dan grouping by feature (mengelompokkan berdasarkan fitur). Untuk pemula, kita bisa mulai dengan yang sederhana: memisahkan komponen, halaman, utils, hooks, dan layanan.
Contoh Struktur Folder yang Rapi:
Penjelasan:
- components: tempat komponen kecil yang dipakai di banyak halaman. Setiap komponen punya folder sendiri jika punya file terkait (CSS, test).
- pages: komponen yang mewakili halaman utuh, biasanya digunakan dengan router.
- hooks: custom hooks buatan sendiri.
- services: fungsi-fungsi untuk berkomunikasi dengan API.
- utils: fungsi utilitas umum (seperti format mata uang, validasi email).
- context: tempat mendefinisikan context.
🧩 Refaktorisasi: Memecah Komponen Besar
Salah satu teknik refaktorisasi paling penting adalah memecah komponen besar menjadi komponen-komponen kecil. Contoh: halaman profil yang menampilkan header, info pengguna, dan daftar teman. Jangan tulis semua dalam satu file besar!
Sebelum (berantakan):
Sesudah (rapi):
Dengan memisah, setiap komponen jadi lebih fokus dan mudah dipelihara.
📦 Membuat Index File untuk Ekspor Rapi
Bayangkan kamu punya folder components/Button dan components/Card. Alih-alih mengimpor dengan path panjang, kita bisa membuat file index.js di folder components yang mengekspor semua komponen.
Contoh components/index.js:
Maka di komponen lain, kita bisa mengimpor seperti ini:
Jauh lebih rapi, kan?
🔧 Tips Refaktorisasi Bertahap
- Jangan refaktor sambil menambah fitur baru. Fokus dulu pada satu hal agar tidak kacau.
- Mulai dari yang kecil. Pisahkan satu komponen dulu, pastikan masih berfungsi, lalu lanjutkan.
- Gunakan Git (atau simpan backup). Agar bisa kembali jika ada yang rusak.
- Periksa kembali setelah refaktor. Jalankan aplikasi dan pastikan tidak ada yang error.
📋 Checklist Refaktor Folder
- Buat folder
componentsdan pindahkan komponen kecil ke sana. - Buat folder
pagesuntuk komponen halaman. - Pisahkan custom hooks ke folder
hooks. - Pindahkan fungsi API ke
services/api.js. - Buat
utils/helpers.jsuntuk fungsi pembantu. - Gunakan
index.jsuntuk mengekspor banyak komponen.
🧪 Latihan: Refaktor Aplikasi Todo List
Coba buka kembali aplikasi Todo List yang kita buat di artikel #15 (atau aplikasi lain). Lakukan langkah-langkah berikut:
- Pisahkan komponen
TodoItemke file terpisah di foldercomponents/TodoItem. - Pisahkan komponen
TodoInput(form tambah tugas) ke file sendiri. - Buat folder
hooksdan pindahkan logika localStorage ke custom hookuseLocalStorage(lihat artikel #23). - Buat file
services/todoService.jsjika ingin simulasi API. - Atur folder sesuai struktur di atas.
Setelah selesai, aplikasi akan tetap berfungsi sama, tapi kode jadi jauh lebih rapi! 🎉
🚀 Kesimpulan
- Struktur folder yang rapi membuat proyek React mudah dinavigasi dan dipelihara.
- Pisahkan komponen, halaman, hooks, utils, dan services ke folder masing-masing.
- Gunakan file
index.jsuntuk menyederhanakan impor. - Refaktorisasi dengan memecah komponen besar menjadi kecil-kecil.
- Lakukan bertahap dan selalu uji setelah perubahan.
Di artikel selanjutnya kita akan belajar tentang Optimasi Kinerja dengan React.memo dan useCallback. Sampai jumpa!