Unit 4 / 12

Semakan Kod, Pemfaktoran Semula dan Hutang Teknikal

Keuntungan:

  • Keupayaan untuk menggunakan AI sebagai mata kedua dalam semakan kod untuk kebolehbacaan, logik dan keselamatan
  • Keupayaan untuk merancang langkah pemfaktoran semula dengan sokongan AI tanpa mengganggu tingkah laku kod yang kompleks
  • Keupayaan untuk mengesahkan semakan AI dan menyunting syor dengan perbandingan ujian dan kawalan versi

Dalam kejuruteraan perisian, kod dibaca lebih banyak daripada yang ditulis. Baris kod ditulis sekali, tetapi dibaca, diubah suai dan dibina berpuluh-puluh kali dalam tempoh beberapa bulan. Itulah sebabnya semakan kod (menyemak kod orang lain atau anda sendiri untuk logik, kebolehbacaan dan keselamatan) dan pemfaktoran semula (memperbaiki struktur kod tanpa mengubah tingkah lakunya) adalah teras kejuruteraan. AI menjadi "mata kedua" yang berkuasa untuk kedua-dua tugas ini: ia dengan cepat mencadangkan kebolehbacaan, menunjukkan isu logik dan keselamatan yang diabaikan, dan memecahkan pemfaktoran semula yang besar kepada langkah selamat yang lebih kecil. Tetapi ada peraturan kritikal: pemfaktoran semula tidak seharusnya mengubah tingkah laku, dan satu-satunya perkara yang menjamin ini ialah ujian.

Dalam unit ini, kita akan melihat cara menggunakan AI dalam cara berstruktur untuk semakan kod, cara membetulkan kod kompleks tanpa melanggar kelakuannya dan cara mengurus hutang teknikal (keputusan kod yang cepat tetapi mahal).

Konsep: Hutang teknikal: Keputusan kod yang dibuat hari ini untuk kelajuan yang menyukarkan penyelenggaraan pada masa hadapan. Bau kod: Corak yang bukan ralat itu sendiri tetapi menunjukkan masalah (fungsi terlalu panjang, kod berulang). Regresi: Apabila perubahan memecahkan sesuatu yang sebelum ini berfungsi.

Menggunakan AI dalam Semakan Kod Berstruktur

Apabila masa terhad, adalah perlu untuk memberi tumpuan kepada isu risiko tertinggi. Pemformat automatik mengendalikan isu pemformatan seperti lekukan dan jarak; Anda mesti menumpukan perhatian manusia kepada logik, keselamatan, dan tingkah laku kes tepi. Apabila membuat semakan AI, minta senarai yang diutamakan, bukan semakan biasa.

  1. Berikan skopnya. Kod apa, apa yang perlu dilakukan, dalam konteks apa ia berfungsi.
  2. Nyatakan paksi keutamaan. Ketepatan dan keselamatan pertama, kebolehbacaan kedua.
  3. Minta pembetulan konkrit. "Mengapa masalah" dan "pembetulan disyorkan" untuk setiap penemuan.
  4. Anda mengesahkan penemuan. AI juga menghasilkan positif palsu; Sahkan setiap penemuan terhadap kod dan ujian.

Gesaan semakan berstruktur: "Periksa fungsi berikut seperti jurutera kanan. Senaraikan penemuan mengikut kepentingan dan tandakannya dengan teg ini: logik/keselamatan [KRITIKAL], kes/prestasi tepi [SEDERHANA], kebolehbacaan/nama [RENDAH]. Untuk setiap penemuan: mengapa bertanya, cadangan pembetulan konkrit. JANGAN LEWATI isu pemformatan/lekukan [akan] automatik: Kod akan dikendalikan.

Gesaan semakan berfokuskan keselamatan: "Semak kod ini untuk tujuan keselamatan sahaja: kekurangan pengesahan input, risiko suntikan, kekurangan kawalan kebenaran, kebocoran maklumat sulit, lalai tidak selamat. Tambahkan contoh senario serangan pada setiap penemuan. Jika tiada isu keselamatan, nyatakan dengan jelas 'Saya tidak menemui sebarang isu keselamatan kritikal'. Kod: [kod]"

Awas: Hanya kerana AI berkata "tiada masalah" bukanlah bukti bahawa tiada masalah. AI boleh menghasilkan negatif palsu; boleh memintas isu keselamatan sebenar. Kajian semula AI tambahan, bukan penggantian, semakan manusia dan ujian keselamatan. Dalam kod kritikal keselamatan, jurutera yang berwibawa mempunyai kata akhir.

Pemfaktoran Semula Terpelihara Ujian

Peraturan emas pemfaktoran semula: uji dahulu, ubah kemudian. Sebelum membetulkan kod, perlu ada ujian yang mengunci tingkah laku semasa supaya anda tahu dengan segera jika perubahan itu melanggar sesuatu. Jangan langgar perintah apabila mempunyai AI refactoring.

  1. Uji tingkah laku semasa. Jika tidak, minta AI menghasilkan "ujian pencirian" (ujian yang menangkap tingkah laku semasa sebagaimana adanya).
  2. Betulkan dalam langkah kecil. Ujian mesti kekal hijau pada setiap langkah.
  3. Jalankannya selepas setiap langkah. Tangkap regresi lebih awal.

Pelan pelan pemfaktoran selamat selamat: "Fungsi 60 baris berikut melakukan terlalu banyak dan sukar dibaca. Saya ingin memfaktorkannya semula TANPA mengubah kelakuannya. Pertama: senaraikan kes ujian yang saya perlukan untuk mengunci kelakuan semasa. Kemudian: pecahkan pemfaktoran semula kepada langkah-langkah kecil, setiap satunya boleh dilaksanakan semasa ujian berwarna hijau. Jangan tulis kod dahulu". Kod: [kod] dahulu".

Gesaan Lemah / Gesaan Kuat

LEMAH: "Jadikan kod ini lebih baik." (Hasil: tidak jelas perkara yang perlu diperbaiki; AI membuat perubahan sewenang-wenangnya, boleh mengubah tingkah laku secara senyap.) KUAT: "Tetapkan semula fungsi pengiraan pembayaran ini untuk kebolehbacaan. KEKANGAN: tingkah laku mesti kekal sama, nilai pulangan tidak boleh berubah. Pisahkan fungsi panjang kepada fungsi utiliti yang bermakna, tingkatkan nombor ajaib kepada pemalar dinamakan. Senaraikan gelagat menukar item demi item dan terangkan SEBAB setiap item: [ kod tidak berubah] KENAPA setiap item tidak berubah.

Gesaan kuat dengan jelas menyatakan kekangan "tingkah laku mesti kekal sama" dan perkara yang perlu diperbaiki. Tanpa kekangan ini, AI boleh menukar logik atas nama "penambahbaikan" dan menghasilkan regresi senyap.

Menguruskan Hutang Teknikal

Pendekatan

Dalam jangka pendek

dalam jangka masa panjang

mengabaikan hutang

kemajuan yang pantas

Lumpuh penyelenggaraan, pasukan perlahan

menulis semula segala-galanya

Pembangunan ciri berdiri

Pulangan tidak menentu, berisiko tinggi

Pemfaktoran semula terukur dan dilindungi ujian

kelembapan kecil

Kelajuan yang mampan

Cara paling sihat ialah yang ketiga: jadikan hutang boleh dilihat (jejaki dalam senarai), mulakan di tempat yang paling menyakitkan, dan kalis ujian setiap pembetulan. AI ialah bantuan yang baik dalam mengenal pasti dan mengutamakan item hutang, tetapi hutang yang perlu dibayar adalah keputusan perniagaan.

Kes Mini

Kes 1 — Regresi senyap. Seorang pembangun memberitahu AI untuk "memudahkan fungsi ini"; AI menterjemah keadaan dengan salah dan pengiraan pulangan rosak. Oleh kerana tiada ujian, ralat berlaku selepas 3 minggu dengan aduan pelanggan. Pasukan melakukan kerja yang sama dengan terlebih dahulu menulis ujian pencirian dan menangkap ralat dengan ujian merah pada larian pertama.

Kes 2 — Mata kedua yang berguna. Dalam semakan kod, AI menyedari bahawa kebenaran pengguna hanya disemak dalam antara muka dan bukan pada pelayan. Ini adalah kerentanan akses tanpa kebenaran. Jurutera menambah pemeriksaan kebenaran bahagian pelayan; Pemeriksaan AI menghalang insiden keselamatan sebenar.

Kes 3 — Positif palsu. AI berkata "pembolehubah ini tidak pernah digunakan, padamkannya"; Walau bagaimanapun, ia digunakan secara tidak langsung melalui mekanisme pantulan berubah-ubah. Jika jurutera tidak mengesahkan cadangan terhadap ujian, ia akan dipadamkan dan ralat masa jalan akan berlaku. Setiap penemuan AI mesti disahkan sebelum pelaksanaan.

Kesilapan biasa

  • Pemfaktoran semula tanpa ujian. Tiada apa-apa lagi untuk memastikan tingkah laku itu dipelihara.
  • Menggunakan penemuan AI tanpa mengesahkannya. Positif palsu dan negatif palsu kedua-duanya berlaku.
  • Membuang masa manusia untuk masalah format. Memberi tumpuan kepada tugas yang boleh diselesaikan oleh alat automatik membayangi risiko sebenar.
  • Mengambil jawapan "Tiada masalah" sebagai jaminan. AI boleh memintas kelemahan; semakan manusia diperlukan.
  • Cuba untuk melunaskan keseluruhan hutang sekaligus. Penulisan semula utama adalah berisiko; Langkah-langkah yang diukur dan dilindungi oleh ujian lebih diutamakan.

Secara ringkasnya

Semakan kod dan pemfaktoran semula menentukan jangka hayat kod. AI ialah penjana mata kedua dan pelan yang berkuasa: menyediakan penemuan yang diutamakan, senario keselamatan dan pelan pemfaktoran semula langkah kecil. Tetapi pemfaktoran semula tidak seharusnya mengubah tingkah laku, dan hanya ujian yang menjamin ini. Sahkan setiap penemuan AI terhadap kod dan ujian; Jangan ambil jawapan "tiada masalah" sebagai bukti. Jadikan hutang teknikal boleh dilihat dan bayar dalam langkah yang diukur dan dilindungi ujian.

Tugasan permohonan

Ambil baris 40-70, fungsi yang agak kompleks yang anda ada (atau minta AI menjana). Mula-mula ikut gesaan semakan berstruktur dan isikan penemuan sebagai [KRITIKAL]/[SEDERHANA]/[RENDAH]; Sahkan sekurang-kurangnya satu penemuan secara manual terhadap kod tersebut. Kemudian, dengan segera pelan pemfaktoran semula selamat, mula-mula jana dan jalankan ujian pencirian, kemudian gunakan pemfaktoran semula dalam langkah-langkah kecil dan sahkan bahawa ujian kekal hijau pada setiap langkah.

senarai semak

  • [ ] Saya menstrukturkan semakan dengan teg keutamaan (kritikal/sederhana/rendah).
  • [ ] Saya telah mengesahkan sekurang-kurangnya satu penemuan AI terhadap kod/ujian.
  • [ ] Saya menguji tingkah laku semasa sebelum pemfaktoran semula.
  • [ ] Saya membuat perubahan dalam langkah kecil dan menjalankan ujian pada setiap langkah.
  • [ ] Saya menyatakan kekangan "Tingkah laku mesti kekal sama" dalam gesaan.
  • [ ] Saya telah mengesahkan bahawa penemuan keselamatan memerlukan pengesahan manusia.