Goose Game Kata, dilakukan secara berpasangan dengan github copilot, untuk mempertajam keterampilan teknik saya yang cepat dan merenungkan pola komunikasi untuk diadopsi saat berpasangan dengan alat pengkodean yang dibantu AI? ...
Semuanya dimulai dengan prompt berikut:
Saya ingin melakukan kata pengkodean dengan Anda, untuk berlatih bersama TDD, refactoring dan desain perangkat lunak. Kami akan mencoba mengikuti TDD dan langkah -langkahnya dengan sangat ketat. Kami akan mengkode Kata di Kotlin, menggunakan pengaturan proyek sederhana di Gradle. Kata adalah sebagai berikut: https://github.com/xpeppers/goose-game-kata. Kami akan mulai dengan fitur pertama, dengan siklus TDD menambahkan tes, membuatnya lulus, refactor kode, dan mengulangi. Kami akan bekerja dalam langkah -langkah kecil, secara iteratif.
Fitur pertama adalah sebagai berikut:
1. Tambahkan pemain
Sebagai pemain, saya ingin menambahkan saya ke permainan sehingga saya bisa bermain.
Skenario:
- Tambahkan pemain
If there is no participant
the user writes: "add player Pippo"
the system responds: "players: Pippo"
the user writes: "add player Pluto"
the system responds: "players: Pippo, Pluto"
- Pemain yang digandakan
If there is already a participant "Pippo"
the user writes: "add player Pippo"
the system responds: "Pippo: already existing player"
Anda akan menulis tes pertama, dan kemudian saya akan memberi Anda umpan balik tentang kualitasnya. Jika tesnya baik -baik saja bagi saya, kami akan melanjutkan untuk mengimplementasikan kode aplikasi yang akan kami lakukan test pass. Kemudian kami akan mencari peluang untuk membuat kode lebih jelas, lebih mudah dipahami dengan refactoring.
Seiring dengan kode, Anda dapat menemukan prompt yang saya gunakan untuk memandu sesi pemrograman pasangan di prompts
> lebih lama. Saya membuat file prompt baru untuk setiap langkah baru yang kami buat. Saya menempatkan lebih banyak petunjuk di file yang sama, dipisahkan oleh ---
line, ketika satu prompt tidak menghasilkan semua tes yang lewat.
Umpan balik saya untuk melakukan kata ini dengan kopilot
- Saya merasa saya kurang fokus pada kode yang dihasilkan, lebih fokus pada prompt yang benar dan apakah respons "berfungsi" atau tidak
- Saya perhatikan bahwa kadang -kadang saya lebih fokus pada bentuk prompt dan apakah kode dikompilasi dan tes masih lulus daripada pada bentuk kode ... kadang -kadang ini membawa kami ke jalan buntu, dan kami harus mengembalikan perubahan dan mulai lagi.
- Tidak jelas seberapa sensitif kopilot terhadap apa yang lebih baik untuk dilakukan setelah refactoring: refactor sesuka? Kapan masuk akal untuk beralih ke tes berikutnya?
- Seringkali, "spesifikasinya" secara inheren ambigu (apa arti "permainan menggulung dadu"?) => dihadapkan dengan ambiguitas ini, sangat mungkin bahwa respons model bukanlah yang "benar", kecuali kita mengurangi ambiguitas Dalam prompt diri kita sendiri (dengan demikian mengasumsikan peran "disambiguator", "pelanggan")
- Kadang -kadang tanggapan model mengejutkan saya (misalnya, ia berhasil memahami konteks dengan baik dan memodifikasi kode untuk menghormati gaya dan bentuk kode yang ada), di lain waktu itu membuat kesalahan yang tampak seperti "kesalahan gangguan" seperti yang kita lakukan?
- Copilot memiliki jendela konteks yang sangat baik, dapat mengingat hal -hal yang dikatakan beberapa petunjuk sebelumnya.
- Ketika refotaktor atau mengusulkan perubahan, itu tidak menyadari bahwa ia juga perlu memperbaiki tes ... hampir selalu berfokus hanya pada kode aplikasi?
- Ketika kode membutuhkan refactoring persiapan untuk mengakomodasi fitur berikutnya (klasik "pertama, buat perubahan mudah, lalu buat perubahan yang mudah"), Copilot berjuang:
- Tampaknya tidak dapat menghadapi penalaran semacam ini (seperti di "kita perlu mengambil langkah mundur dan meninjau hal -hal secara strategis")
- Gagal mengidentifikasi bau "kompleks" seperti ketika logika yang kita butuhkan untuk fitur berikutnya tersebar di beberapa kelas, jadi kita perlu mengambil langkah mundur sebelum bergerak maju.
- Bahkan jika Anda mengatakannya untuk memulai dari awal, membuang semua kode yang diproduksi mulai dari tes yang tetap bertarung merah, sering kali hanya mengulangi langkah yang sama, bahkan jika Anda mengatakannya "mari kita coba pendekatan baru" atau "mari kita lakukan hal -hal dalam langkah -langkah kecil ”.
Lihat juga Refleksi Saya Di Sini (Italia)