Refactor adalah merapikan struktur kode tanpa mengubah behavior. Kedengarannya sederhana, tapi di project nyata refactor sering berisiko karena kode yang "lebih rapi" belum tentu masih bekerja sama.
AI bisa membantu refactor. Ia cepat menemukan duplikasi, memberi nama fungsi, memecah komponen, dan menyarankan struktur baru. Tapi AI juga punya kecenderungan membuat perubahan terlalu luas kalau tidak dibatasi.
Jadi kuncinya: refactor dengan AI harus bertahap.
Mulai dari menjelaskan behavior
Sebelum meminta refactor, minta AI menjelaskan behavior kode yang ada.
Prompt:
Tolong jelaskan behavior kode ini sebelum refactor.
Fokus pada:
- input yang diterima
- output yang dihasilkan
- side effect
- kondisi error
- bagian yang tidak boleh berubah
Kalau AI belum bisa menjelaskan behavior dengan benar, jangan minta ia refactor. Koreksi dulu pemahamannya.
Refactor tanpa pemahaman behavior hanya membuat kode terlihat rapi di permukaan.
Tentukan tujuan refactor
Jangan memakai prompt terlalu umum seperti:
Refactor kode ini supaya lebih bagus.
"Lebih bagus" bisa berarti banyak hal. AI bisa memecah fungsi, mengganti pola, mengubah nama, atau menambah abstraksi yang tidak dibutuhkan.
Tulis tujuan yang spesifik:
Tolong refactor kode ini dengan tujuan:
- mengurangi duplikasi validasi
- menjaga output tetap sama
- tidak mengubah struktur database
- tidak menambah dependency
- perubahan maksimal di file ini saja
Tujuan yang jelas membuat hasil lebih mudah direview.
Kunci behavior dengan test atau checklist
Sebelum refactor, pastikan ada cara mengecek hasilnya.
Untuk fungsi kecil, buat test otomatis. Untuk UI, buat checklist manual.
Prompt:
Sebelum refactor, test atau checklist apa yang perlu ada agar behavior lama tetap aman?
Contoh checklist:
- input normal tetap menghasilkan output yang sama
- input kosong tetap ditangani
- error message tidak berubah
- permission tetap sama
- route publik tetap bisa dibuka
- layout mobile tidak berubah
Kalau tidak ada test sama sekali, refactor harus lebih kecil.
Minta perubahan satu langkah
AI sering ingin langsung menyelesaikan semua masalah. Padahal refactor paling aman dilakukan satu langkah.
Gunakan prompt:
Tolong lakukan satu refactor kecil saja.
Jangan ubah behavior.
Setelah itu jelaskan apa yang berubah dan kenapa aman.
Contoh langkah kecil:
- ekstrak helper untuk format tanggal
- pindahkan array konfigurasi keluar komponen
- pecah fungsi validasi
- hapus duplikasi mapping
- rename variabel yang membingungkan
Setelah satu langkah aman, baru lanjut.
Hindari abstraksi terlalu cepat
AI kadang membuat helper, factory, config map, atau generic utility terlalu cepat. Abstraksi memang bisa membantu, tapi juga bisa membuat kode lebih sulit dibaca kalau problemnya belum cukup besar.
Tanyakan:
Apakah abstraksi ini benar-benar mengurangi kompleksitas, atau hanya memindahkan kode ke tempat lain?
Abstraksi yang baik biasanya:
- menghapus duplikasi nyata
- punya nama yang jelas
- dipakai lebih dari satu tempat
- membuat alur lebih mudah dibaca
- tidak menyembunyikan behavior penting
Kalau tidak memenuhi itu, mungkin cukup rapikan kode lokal saja.
Minta diff yang mudah direview
Untuk refactor, ukuran diff sangat penting. Diff yang terlalu besar membuat reviewer sulit memastikan behavior tidak berubah.
Prompt:
Tolong buat perubahan dengan diff kecil.
Jangan format ulang seluruh file.
Jangan rename hal yang tidak terkait.
Jangan ubah urutan kode kecuali perlu.
Ini membantu menjaga review tetap fokus.
Cek setelah refactor
Setelah AI memberi refactor, jangan hanya lihat apakah kode compile.
Cek:
- apakah behavior lama tetap sama?
- apakah nama baru lebih jelas?
- apakah ada dependency baru?
- apakah ada perubahan luas yang tidak diminta?
- apakah test masih relevan?
- apakah ada edge case yang hilang?
Kalau AI menghapus kondisi yang terlihat "tidak perlu", cek lagi. Kondisi seperti itu kadang ada karena bug lama.
Contoh prompt refactor yang aman
Saya ingin refactor kode ini secara aman.
Konteks:
[jelaskan fitur]
Batasan:
- behavior publik tidak boleh berubah
- jangan tambah dependency
- jangan ubah schema
- perubahan kecil dulu
Tolong:
1. Jelaskan behavior saat ini.
2. Sebutkan risiko refactor.
3. Sarankan satu refactor kecil.
4. Beri patch.
5. Beri checklist untuk memastikan behavior tetap sama.
Template ini cocok untuk function, komponen React, server action, helper, atau query.
Kapan jangan refactor dengan AI?
Tunda refactor kalau:
- kamu belum paham behavior lama
- tidak ada cara mengecek hasil
- kode menyentuh data penting
- deadline terlalu dekat
- perubahan yang diminta terlalu besar
- AI terus memberi patch yang tidak sesuai pattern project
Dalam situasi seperti ini, lebih baik baca kode manual, buat test dulu, atau refactor bagian yang lebih kecil.
Kesimpulan
Refactor kode pakai AI bisa mempercepat pekerjaan, tapi harus diarahkan dengan disiplin. Jelaskan behavior, tentukan tujuan, batasi perubahan, dan cek hasilnya.
Refactor yang baik bukan yang terlihat paling modern. Refactor yang baik membuat kode lebih mudah dirawat tanpa mengubah cara fitur bekerja.