Kod yang AI Tidak Akan Tulis

Saya menggunakan pengesahan borang (form validation) sebagai soalan temu duga teknikal. Ia kelihatan mudah. Jawapannya mendedahkan cara orang berfikir.

Saya menguji masalah ini pada Claude, ChatGPT, dan Gemini. Semuanya memberikan penyelesaian yang sama.

Kebanyakan orang menggunakan satu fungsi dengan parameter jenis (type parameter) untuk mengendalikan alamat yang berbeza. Ia berfungsi. Tetapi setiap peraturan baharu menambah cawangan (branch) baharu pada fungsi yang sama itu. Perbezaannya kekal tersembunyi.

Jawapan manusia yang paling bijak yang saya lihat menggunakan rekursi (recursion). Ia menelusuri bentuk data. Ia elegan. Tetapi ia mempunyai kelemahan. Ia hanya mengesahkan medan (fields) yang wujud. Jika sesuatu kunci (key) hilang, fungsi tersebut tidak akan pernah mengesannya. Ia tidak mempunyai sumber kebenaran (source of truth).

Ketiga-tiga AI tersebut melakukan kesilapan yang sama. Apabila saya menunjukkan kelemahan tersebut, semuanya mencadangkan skema (schema). Pendekatan berasaskan skema adalah mantap dari segi teknikal. Ia mengendalikan kunci yang hilang dan boleh diskalakan dengan baik.

Tetapi ada cara yang lebih baik: Komposisi (Composition).

Daripada menggunakan satu fungsi gergasi atau skema yang kompleks, anda mencipta fungsi khusus untuk setiap jenis.

Anda menggabungkannya untuk membina pengesah (validator) anda.

Pendekatan ini menyelesaikan masalah kunci yang hilang. Pengesah pengebilan sentiasa menyemak nombor VAT, walaupun kunci tersebut hilang. Ia berfungsi kerana alamat pengebilan adalah konsep perniagaan yang sebenar. Ia bukan sekadar corak dalam data anda.

Perbezaannya dinyatakan dengan jelas. Apabila jenis alamat baharu muncul, anda menambah fungsi baharu. Anda tidak mengubah kod lama.

AI dan jurutera terbaik sering terperangkap dalam perangkap yang sama. Kita diajar untuk mencari corak dan memusatkan logik. Kita cuba menghapuskan pertindihan (duplication) pada apa jua kos.

AI mewarisi naluri ini daripada data latihan kita. Ia mengutamakan generalisasi (generalization).

Masalahnya bukan kerana AI itu salah. Masalahnya ialah AI jarang bertanya soalan yang paling penting: Adakah kepelbagaian (variability) ini wujud dalam kod saya atau dalam data saya?

Jika jenis alamat adalah stabil, gunakan komposisi. Jika jenis alamat berubah melalui data luaran, gunakan skema.

Penyelesaian yang paling ringkas bukanlah yang mempunyai baris kod paling sedikit. Ia adalah penyelesaian yang mencerminkan domain perniagaan anda.

Sumber: https://dev.to/iceonfire/the-code-ai-wont-write-1ieb

Komuniti pembelajaran pilihan: https://t.me/GyaanSetuAi