Apakah Kode AI Anda Sampah? (Ini Cara Memperbaikinya)
BBetter Stack
Computing/SoftwareManagementInternet Technology
Transcript
00:00:00Hari ini, saya ingin bicara soal CRAP. Dan bukan, bukan CRAP yang itu. Saya bicara soal
00:00:05singkatannya, yang berarti Change Risk Anti-Patterns Index. Dan ini dirancang untuk menemukan
00:00:12fungsi berisiko dalam kode Anda, yang sangat kompleks, tapi kurang teruji. Ini bukan konsep
00:00:18yang baru, tapi yang menarik perhatian saya akhir-akhir ini, berkat paket yang dirilis oleh
00:00:24Alexander Prokhoranko bernama Cargo CRAP, yang mengidentifikasi fungsi-fungsi kunci ini dalam kode Rust.
00:00:31Ide awal untuk metrik CRAP berasal dari Alberto Savoia dan Bob Evans, yang menemukan
00:00:37metrik ini pada tahun 2007 saat bereksperimen dengan alat pengujian pengembang otomatis. Tapi Alexander
00:00:44baru saja menghidupkan kembali perhatian pada metrik yang terlupakan ini dengan menulis blog post yang berwawasan
00:00:49tentang hal itu dan bagaimana saat ini ketika hampir semua kode ditulis oleh agen AI, ini lebih penting dari sebelumnya
00:00:55untuk memindai basis kode Anda dari masalah-masalah tersembunyi ini. Ini konsep yang sangat keren dan kita akan menjelajahinya
00:01:01lebih detail di video hari ini. Jadi mari kita bahas. Untuk memahami mengapa ini penting, mari kita lihat
00:01:11fungsi di layar saya ini. Fungsi ini menangani transformasi data multi-langkah dengan pernyataan match
00:01:16yang sangat bersarang, beberapa loop, dan banyak jalur penanganan error. Jadi kompleksitas siklomatiknya cukup tinggi, sekitar 15.
00:01:24Sekarang jika Anda tidak familiar dengan istilah kompleksitas siklomatik, ini pada dasarnya adalah cara mewah untuk mengukur
00:01:30berapa banyak jalur berbeda yang bisa diambil sepotong data melalui kode Anda. Setiap kali Anda menulis pernyataan if
00:01:36atau match atau while loop atau blok catch, Anda menciptakan percabangan di jalan dan semakin banyak percabangan,
00:01:43semakin tinggi skor kompleksitasnya. Dan semakin sulit bagi otak manusia untuk memetakan setiap kemungkinan hasil
00:01:51dalam sebuah fungsi. Itulah sebabnya setiap kali memungkinkan, kita mencoba memecah fungsi menjadi tugas-tugas yang lebih kecil.
00:01:57Dan untuk fungsi di layar saya ini, kompleksitas 15 berarti ada 15 jalur yang sepenuhnya terpisah
00:02:04yang bisa dieksekusi logika ini dari awal sampai akhir. Sekarang jika fungsi ini sepenuhnya dicakup oleh unit test,
00:02:09skor CRAP-nya tetap 15. Kompleks, tapi aman karena kita memvalidasi perilakunya.
00:02:16Dan ini yang seharusnya kita harapkan saat kita menjalankan alat milik Alexander, CargoCrap. Dan di sini kita lihat skornya 13,
00:02:23bukan 15. Mungkin karena pustakanya tidak memperhitungkan penanganan error.
00:02:27Tapi tidak apa-apa, 15 dan 13 cukup dekat. Jadi pada dasarnya alat ini melakukan apa yang kita harapkan.
00:02:33Tapi mari kita lihat apa yang terjadi jika seseorang menghapus tes tersebut atau jika agen AI membuat fungsi ini
00:02:39dari nol dan tidak menulis tes sama sekali. Jadi dalam contoh ini, saya hanya akan mengomentari tes saya.
00:02:45Dan jika kita menjalankan CargoCrap lagi, tiba-tiba skornya melonjak melewati 100.
00:02:51Jadi ini menggunakan rumus langsung untuk menghitung risiko dengan menyeimbangkan kompleksitas siklomatik,
00:02:57jumlah jalur eksekusi linear melalui kode Anda terhadap cakupan tes (test coverage).
00:03:03Jadi jika kita melihat fungsi ini, C adalah kompleksitas siklomatik fungsi tersebut dan COV adalah cakupan tes
00:03:10yang dinyatakan sebagai pecahan antara nol dan satu. Dan rumusnya sangat menghukum kode kompleks yang kurang tes.
00:03:17Jadi jika cakupan Anda seratus persen, bagian pertama persamaan turun menjadi nol
00:03:23dan skor CRAP Anda sama dengan kompleksitas siklomatik Anda.
00:03:26Tapi jika cakupan Anda turun, eksponen kubik di sisi kiri menyebabkan skor risiko meroket.
00:03:33Dan sebuah fungsi dengan kompleksitas 10 dan cakupan nol menghasilkan skor CRAP 110.
00:03:39Dan ini bagus karena jika Anda menginginkan basis kode di mana, misalnya,
00:03:43tidak ada fungsi yang melebihi kompleksitas siklomatik lima, maka ini adalah metrik dasar untuk diperhatikan.
00:03:49Dan jika fungsi apa pun menjadi lebih tinggi dari lima, Anda tahu bahwa ini area yang perlu diperhatikan.
00:03:55Biasanya Anda akan memberikan kelonggaran untuk kompleksitas yang lebih tinggi. CargoCrap memiliki default yang ditetapkan pada 30.
00:04:00Tapi saya hanya bilang bahwa Anda bisa menetapkan metrik ini sendiri sesuai keinginan Anda.
00:04:05Dan jadi pada dasarnya ini adalah metrik jalan tengah yang baik untuk diperhatikan.
00:04:09Dan ini menjadi kritis di era kode yang dihasilkan AI.
00:04:13Karena agen AI sangat ahli dalam mengeluarkan blok kode yang sangat kompleks dan secara sintaksis benar
00:04:20yang menangani kasus-kasus khusus yang bahkan tidak terpikirkan oleh Anda, tetapi mereka sangat buruk dalam menulis
00:04:25tes integrasi yang bermakna dan kuat kecuali dipaksa secara eksplisit.
00:04:30Jadi alat seperti CargoCrap dimaksudkan untuk dijalankan sebagai pemeriksaan kedua setelah menjalankan semua unit test
00:04:37untuk menilai kualitas kode secara keseluruhan.
00:04:39Jadi pada dasarnya ini berfungsi seperti peta panas untuk utang teknis Anda, mengarahkan Anda langsung ke kode
00:04:44yang paling mungkin rusak saat refaktor.
00:04:47Dan ini juga sangat membantu jika Anda ingin menjaga basis kode Anda terstruktur dengan baik
00:04:52jika Anda perlu melakukan onboarding insinyur baru ke dalam tim Anda.
00:04:56Dan kita tahu dari akun anekdot betapa kacaunya basis kode dengan semua kode
00:05:02yang dihasilkan AI saat ini jika kita tidak memperhatikannya.
00:05:06Dan terkadang agen AI ini juga cenderung menduplikasi fungsi yang sama di beberapa file.
00:05:13Jadi saya pikir alat seperti ini dan yang lebih penting metodologi seperti ini penting untuk disadari
00:05:19dan untuk tidak dilupakan dalam lanskap pengodean modern kita agar kualitas kode kita tetap tinggi.
00:05:24Penulis yang sama yang menemukan metodologi ini juga merilis alat metrik crap untuk Java.
00:05:30Dan jujur, sampai baru-baru ini membaca blog post Alexander, saya bahkan tidak sadar dengan metrik ini.
00:05:34Jadi saya berterima kasih alatnya membuat saya memperhatikan praktik rekayasa yang sudah lama terlupakan ini.
00:05:40Dan saya yakin bahasa pemrograman lain juga akan mendapat manfaat dari alat semacam itu.
00:05:44Jadi jika Anda memikirkan proyek yang menyenangkan untuk dibangun di waktu luang Anda,
00:05:48pergi baca postingan asli Alberto Savoia dan bangun satu untuk bahasa pemrograman lain
00:05:53karena itu bisa menjadi utilitas yang sangat berguna bagi banyak pengembang.
00:05:57Jadi begitulah, teman-teman.
00:05:58Itulah CRAP secara singkat.
00:06:01Itu terdengar lucu.
00:06:02Bagaimanapun, apa saja praktik atau metrik rekayasa lain yang sudah lama terlupakan yang Anda tahu
00:06:08yang seharusnya lebih kita perhatikan di zaman baru pengodean agen ini?
00:06:13Beritahu kami di kolom komentar di bawah.
00:06:15Dan teman-teman, jika Anda menyukai jenis analisis teknis ini,
00:06:18tolong beritahu saya dengan menekan tombol like di bawah video ini.
00:06:21Dan juga jangan lupa untuk berlangganan ke saluran kami.
00:06:24Ini Andrus dari BetterStack dan saya akan bertemu Anda di video berikutnya.
00:06:28Sampai jumpa di video berikutnya.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video