Unit 3 / 12

Pengekodan dan Pasangkan Pengaturcaraan dengan AI

Keuntungan:

  • Keupayaan untuk menulis fungsi, kelas dan modul kepada AI dengan definisi input-output dan kekangan yang jelas
  • Keupayaan untuk menggunakan AI sebagai rakan kongsi pengaturcaraan pasangan dan kemajuan langkah demi langkah, dalam bahagian kecil yang boleh disahkan
  • Keupayaan untuk menangkap logik dan ralat kes tepi dengan menyusun kod yang dihasilkan oleh AI dan menjalankannya dengan contoh kecil

Pengaturcaraan pasangan ialah apabila dua pembangun menyelesaikan masalah yang sama, dengan satu menulis dan yang lain menyemak semula. Pengekodan dengan AI ialah versi digital perhubungan ini: anda menetapkan hala tuju, kekangan dan kriteria penerimaan; AI menghasilkan draf pantas; Anda mengesahkan setiap langkah dengan menyusun dan mengujinya. Perangkap terbesar di sini adalah untuk memberitahu AI "tuliskan saya aplikasi ini dari awal hingga akhir" dan menerima blok 200 baris secara membuta tuli. Pengaturcaraan pasangan yang baik diteruskan dalam langkah-langkah kecil: setiap langkah harus difahami, boleh diuji dan boleh diterbalikkan.

Dalam unit ini anda akan belajar cara mencetak fungsi, kelas dan modul dengan kontrak input-output yang jelas; Bagaimana untuk membimbing AI langkah demi langkah; dan kita akan melihat bagaimana untuk menangkap logik dan ralat kes tepi dengan menjalankan kod yang dihasilkan dengan contoh kecil. Matlamatnya bukan kelajuan, tetapi kelajuan yang disahkan.

Konsep: Kontrak input-output: Takrifan yang jelas tentang input yang diambil oleh fungsi dan tingkah laku output dan ralat yang dijanjikan. Kes tepi: Input yang bukan biasa tetapi sebenarnya boleh berlaku (kosong, sifar, negatif, sangat besar, batal). Pembangunan tambahan: Meneruskan dengan bahagian kecil yang berfungsi dan mengesahkan setiap langkah.

Kod Percetakan dengan Kontrak Bersih

Asas kod kualiti adalah untuk menentukan dengan tepat "apa yang anda mahu" sebelum memulakan kerja. Apabila menulis fungsi kepada AI, berikan lima perkara: bahasa dan versi, jenis dan makna input, output, keadaan ralat dan kekangan (prestasi, larangan perpustakaan luaran, gaya). Ini menghalang AI daripada meneka.

  1. Tulis kontrak. Input, output, ralat, kekangan.
  2. Minta unit kecil. Satu fungsi dengan satu tanggungjawab; Ia bukan modul yang besar.
  3. Minta blok ujian. Tambahkan beberapa larian/ujian sampel di sebelah kod.
  4. Susun dan jalankan. Cuba dengan bekas tepi, sahkan output dengan mata.
  5. Pergi ke langkah seterusnya. Sebaik sahaja sekeping disahkan, bina di atasnya.

Gesaan fungsi yang dikontrakkan: "Tulis fungsi untuk TypeScript 5. Tujuan: hitung jumlah item dalam troli beli-belah. Input: { harga: nombor, kuantiti: nombor }[] tatasusunan. Output: nombor (jumlah). Peraturan: buang Ralat jika kuantiti atau harga negatif; kembalikan 0 untuk tatasusunan kosong; amaun bulat kepada 2 tempat perpuluhan untuk ralat perpuluhan, jangan gunakan pustaka luaran yang kosong. harga, item tunggal).”

Membimbing AI sebagai Pasangan

Kemajuan yang baik dalam pengaturcaraan pasangan ialah dialog dan bukannya satu permintaan besar. Pertama, minta rangka dan jalankannya; kemudian tambah keadaan tepi; kemudian selesaikan pepijat. Pendekatan ini memastikan kod mudah difahami dan meletakkan anda dalam kawalan pada setiap langkah.

Gesaan kemajuan tambahan: "Kami akan menulis pembaca yang membaca fail CSV dan menukar baris menjadi objek. Mari kita pergi LANGKAH DEMI LANGKAH, beralih ke langkah seterusnya tanpa saya mengesahkan setiap langkah. Langkah 1: hanya tulis rangka yang membahagikan fail kepada baris dan memisahkan baris pengepala. Jangan tambahkan penukaran jenis atau pengendalian ralat lagi. Pastikan ia pendek, terangkan."

Terangkan dan wajarkan gesaan kod: "Terangkan fungsi yang baru anda tulis, bukan baris demi baris, tetapi keputusan demi keputusan: keputusan reka bentuk yang anda buat dan mengapa, kes tepi yang anda kendalikan dan bagaimana, kes yang anda sengaja kecualikan? Senaraikan 3 andaian dalam kod yang saya tidak patut terlepas."

Petua: Jangan terima kod yang dijana AI tanpa memahaminya. "Jelaskan ini kepada saya, apakah andaian yang anda buat?" Soalan kedua-duanya mendedahkan ralat tersembunyi dan membolehkan anda mempertahankan kod itu, kerana kod itu tetap menjadi tanggungjawab anda. Meletakkan kod yang anda tidak faham ke dalam pengeluaran adalah seperti menghantar kontrak tanpa menandatanganinya.

Gesaan Lemah / Gesaan Kuat

LEMAH:"Tulis fungsi pengisihan."(Hasil: bahasa mana, apa yang sedang diisih, adakah ia stabil, apakah kekangan prestasi, kod yang samar-samar dan mungkin tidak sesuai dengan keperluan.)KUAT:"Untuk Java 17, tulis kaedah yang mengisih objek Senarai<Pekerja> dahulu mengikut jabatan (abjad), kemudian dengan JANGAN kembalikan senarai asal (menurun senarai yang baru). terakhir. Terangkan kerumitan kaedah dalam baris ulasan tentukan tambah blok ujian utama dengan 4 sampel."

Gesaan yang kuat; Termasuk kriteria pengisihan (dua peringkat), peraturan kesan sampingan (menggantikan asal), tingkah laku nol dan jangkaan ujian. Tanpa butiran ini, AI menghasilkan penyelesaian yang munasabah tetapi tidak betul; contohnya ia mungkin merosakkan senarai asal dan ini akan membawa kepada ralat senyap di tempat lain.

Pengesahan dengan Kes Tepi dan Sampel Kecil

Kod yang berfungsi dalam senario gembira bukanlah kod yang betul. Secara sedar memaksa setiap fungsi yang dihasilkan:

Jenis kes tepi

input sampel

tingkah laku yang diharapkan

input kosong

Tatasusunan/rentetan kosong

Bukan ralat, keputusan kosong yang logik

Sifar/negatif

0, -1

Tingkah laku yang ditetapkan dan betul

nilai hebat

Berjuta rekod

Kawalan limpahan/prestasi

null/undefined

hilang ruang

Ralat terkawal atau lalai

Pendua/luar biasa

urutan berulang, terbalik

hasil yang betul

Kes Mini

Kes 1 — Ralat pembundaran senyap. AI menulis fungsi yang mengumpul wang dengan jenis perpuluhan (terapung); 0.1 + 0.2 memberikan 0.3000000000000004. Ralat diselesaikan apabila jurutera menambah peraturan "Bundarkan kepada 2 digit dan gunakan keseluruhan sen". Peraturan 3 baris menghalang beribu-ribu sen varians dalam penyesuaian bulanan.

Kes 2 — Perangkap kesan sampingan. AI menulis kaedah yang "mengisih" senarai, tetapi mengubah suai senarai asal di tempatnya. Tingkah laku yang tidak dijangka berlaku kerana modul lain menggunakan senarai yang sama. Jika kekangan "tukar asal" berada dalam gesaan, ralat tidak akan berlaku; terperangkap dalam semakan kod dan menghalang 2 jam penyahpepijatan.

Kes 3 — Pendapatan langkah demi langkah. Seorang pembangun mencetak modul import 150 baris sekaligus; Apabila dia mendapati kesilapan, dia tidak dapat mencari dari mana ia datang. Pembangun lain membahagikan kerja yang sama kepada 5 langkah kecil, menguji setiap langkah dalam 2 minit dan menangkap ralat serta-merta dalam langkah ke-3.

Kesilapan biasa

  • Mencetak blok besar dalam satu permintaan. Kod berisiko yang sukar difahami dan nyahpepijat dilahirkan.
  • Meminta kod tanpa memberi kontrak. Jika ralat input-output-error tidak jelas, AI akan meneka dan salah.
  • Hanya menguji senario gembira. Jika input kosong, batal, negatif dan besar tidak dicuba, ralat diserahkan kepada pengeluaran.
  • Menerima tanpa memahami. Kod yang anda tidak dedahkan adalah hutang yang anda tidak boleh pertahankan.
  • Mengabaikan jenis sensitif seperti kesan sampingan dan wang/tarikh. Wang terapung dengan sejarah abadi adalah sumber kesilapan klasik.

Secara ringkasnya

Menulis kod dengan AI ialah pengaturcaraan pasangan berdisiplin: kontrak yang jelas, langkah kecil, bina dan ujian pada setiap langkah. Memberi kuartet input-output-error-constraint dari awal menentukan kualiti kod. Menjelaskan kod yang dihasilkannya dan memaksanya dengan kes tepi membawa ke permukaan ralat yang tersembunyi di bawah senario gembira. Sumber kelajuan bukanlah penerimaan buta; ialah draf cepat serta pengesahan pantas.

Tugasan permohonan

Pilih fungsi yang kecil tetapi nyata (cth. jumlah bakul, perbezaan tarikh, penghuraian teks). Cetak menggunakan gesaan fungsi yang dikontrakkan; Tambahkan sekurang-kurangnya 5 senario ujian di sebelahnya. Jalankan kod dan cuba 5 kes tepi secara sedar, menggunakan jadual sebagai panduan. Cari pepijat dalam sekurang-kurangnya satu kes tepi (jika tidak, reka bentuk input baharu untuk memaksa fungsi), betulkan dengan AI dan sahkan dengan menguji semula bahawa pembetulan itu berjaya.

senarai semak

  • [ ] Saya menulis kontrak yang merangkumi input, output, ralat dan kekangan.
  • [ ] Saya menjana kod dalam langkah kecil dan bukannya satu blok besar.
  • [ ] Saya menambah blok ujian/sampel dijalankan di sebelah kod.
  • [ ] Saya secara sedar telah menguji sekurang-kurangnya 5 kes tepi.
  • [ ] Saya menerangkan kod itu kepada AI dan menyemak andaiannya.
  • [ ] Saya membetulkan ralat yang ditemui dan mengesahkan pembetulan dengan menguji semula.