Coding & data · Dua fase
Refaktor kode tanpa mengubah perilakunya
Fase 1 memetakan bagian kode yang sulit dirawat dan menyiapkan tes pengaman; fase 2 merapikannya selangkah demi selangkah tanpa mengubah hasil program.
2 langkah6 isianDiperbarui
Untuk: Programmer pemula–menengah dan mahasiswa yang punya kode berjalan tetapi panjang, berulang, dan sulit diubah.
Diadaptasi dari prompts.chat (CC0)
Prompt siap salin
Kirim berurutan dalam satu percakapan, satu pesan per langkah, dan baca jawabannya sebelum lanjut.
Fase 1 — petakan dan kunci perilaku
Ini kode {{bahasa pemrograman}} yang sudah berjalan dengan benar tetapi sulit dirawat. Kunci API dan data pribadi sudah saya hapus. """ {{tempel kode}} """ Yang membuat saya ingin merapikannya: {{misalnya fungsi 200 baris, logika yang sama ditulis tiga kali, nama variabel tidak jelas}}. Belum perlu menulis ulang. Beri: 1. Daftar masalah struktur (fungsi terlalu panjang, kode berulang, nama yang menyesatkan, percabangan bertingkat dalam), masing-masing dengan nomor baris. 2. Perilaku yang harus tetap sama setelah dirapikan: masukan, keluaran, dan efek samping seperti menulis berkas atau mengirim request. 3. Tiga sampai lima tes pengaman yang mengunci perilaku itu, ditulis dengan {{pytest / Jest / JUnit / alat tes lain}}, untuk saya jalankan sebelum mengubah apa pun. 4. Urutan langkah refaktor dari yang paling kecil risikonya.Fase 2 — rapikan satu langkah
Kirim setelah tes pengaman lulus di komputermu. Ulangi untuk tiap langkah.
Tes pengaman sudah saya jalankan dan hasilnya: {{lulus semua / tempel yang gagal}}. Kerjakan langkah refaktor nomor {{nomor langkah}} saja. Tunjukkan kode sebelum dan sesudah untuk bagian yang berubah, jelaskan kenapa versi baru lebih mudah dirawat, dan pastikan tidak ada perubahan perilaku. Jangan menambah fitur, mengganti library, atau mengarang fungsi yang tidak ada di kode saya. Bila sebuah langkah ternyata mengubah perilaku, hentikan dan katakan.
Isian yang harus kamu ganti
Ganti bagian yang disorot, termasuk tanda {{ }}.
- bahasa pemrograman
- tempel kode
- misalnya fungsi 200 baris, logika yang sama ditulis tiga kali, nama variabel tidak jelas
- pytest / Jest / JUnit / alat tes lain
- lulus semua / tempel yang gagal
- nomor langkah
Bedah prompt: kenapa ini bekerja
Tiap potongan di bawah dikutip persis dari prompt di atas.
Belum perlu menulis ulang.
Peta masalah lebih dulu membuat kamu memilih apa yang dirapikan, bukan menerima tulisan ulang yang sulit diperiksa.
tes pengaman yang mengunci perilaku itu
Tes yang dijalankan sebelum refaktor menjadi bukti bahwa kode baru masih menghasilkan keluaran yang sama dengan kode lama.
Kerjakan langkah refaktor nomor
Satu langkah per kiriman membuat setiap perubahan kecil, mudah diuji ulang, dan mudah dibatalkan bila tesnya gagal.
Jangan menambah fitur, mengganti library
Refaktor yang diam-diam menambah fitur atau dependensi mencampur dua jenis perubahan sehingga sumber bug baru sulit dilacak.
Kalau jawabannya belum pas
Kirim di percakapan yang sama. Perintah yang spesifik jauh lebih efektif daripada "perbaiki lagi".
Tes gagal setelah refaktor
Setelah langkah tadi, tes ini gagal: """ {{pesan kegagalan tes}} """ Bandingkan kode sebelum dan sesudah, tunjukkan perubahan perilaku yang menyebabkannya, dan beri versi yang mengembalikan perilaku lama.
Kelas terkait
Prompt lain di Coding & data
- Jelaskan pesan error dan cari penyebabnyaIsian formulir · Isi formulir bahasa, perintah, pesan error lengkap, dan kode terkait, lalu dapat arti error, dugaan penyebab, dan cara membuktikannya.
- Query SQL dari pertanyaan bisnisPercakapan bertahap · Tempel skema tabel sekali, pastikan AI memahaminya, lalu ajukan pertanyaan satu per satu dan dapat query beserta penjelasannya.
- Regex dari contoh yang cocok dan tidakDengan contoh · Daftar teks yang harus cocok dan yang harus ditolak jadi soal latihan bagi AI, lalu regex-nya diuji terhadap setiap contoh.
- Pesan commit dan deskripsi pull requestDua fase · Fase 1 meringkas diff dan memeriksa apakah perlu dipecah; fase 2 menulis pesan commit dan deskripsi PR dari ringkasan yang kamu setujui.