AI都深度思考了,人卻不思考了...
在了解Fastjson編解碼Integer數(shù)字時(shí),曹小三同學(xué)讓DeepSeek“深度思考”生成了一些testcase。下面是DeepSeek提供的JUnit5測試代碼。
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONException;
import org.junit.jupiter.api.Test;
import static org.junit.Assert.*;
public class IntegerCodecTest {
@Test
void testNullValue() {
String json = "{\"num\": null}";
Model model = JSON.parseObject(json, Model.class);
assertNull(model.num);
}
@Test
void testInvalidFormat() {
String json = "{\"num\": \"abc\"}";
assertThrows(JSONException.class, () ->
JSON.parseObject(json, Model.class)
);
}
static class Model {
private Integer num;
// getter/setter
}
}
其中,小三在運(yùn)行testInvalidFormat時(shí),發(fā)現(xiàn)assertThrows不奏效————junit斷言JSON.parseObject(json, Model.class)會(huì)拋出JSONException,實(shí)際卻沒有拋出。
小三就反饋給DeepSeek。
DeepSeek開啟了“一本正經(jīng)地胡說八道”模式。
小三把這個(gè)情況講給同事趙小四,小四自信地解釋道“這是Fastjson在兼容性方面做得好。”
小三、小四的師傅工匠李得知后,一眼發(fā)現(xiàn)了問題。原來,上面JUnit代碼中,DeepSeek省略了Model類的 getter/setter,加上就好使了。并通過運(yùn)行testInvalidFormat給兩個(gè)小伙演示所拋出的異常stacktrace。
點(diǎn)擊查看代碼
com.alibaba.fastjson.JSONException: parseInt error, field : num
at com.alibaba.fastjson.serializer.IntegerCodec.deserialze(IntegerCodec.java:101)
...
at com.alibaba.fastjson.JSON.parseObject(JSON.java:588)
at com.emax.IntegerCodecTest.testInvalidFormat(IntegerCodecTest.java:36)
...
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
Caused by: java.lang.NumberFormatException: For input string: "abc"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at com.alibaba.fastjson.util.TypeUtils.castToInt(TypeUtils.java:995)
at com.alibaba.fastjson.serializer.IntegerCodec.deserialze(IntegerCodec.java:93)
小三、小四這才明白這個(gè)技術(shù)點(diǎn):
Fastjson對(duì)于非Integer數(shù)字,是無法反序列化為Integer或int數(shù)字的,會(huì)拋出異常。
【結(jié)語】如今,AI 代碼生成工具如 Copilot、Cursor 等,能基于簡單提示快速輸出代碼片段,甚至完成復(fù)雜功能模塊,其 “思考” 速度與覆蓋范圍令人驚嘆。但不少程序員卻因此過度依賴,遇到問題便直接讓 AI 生成代碼,不再主動(dòng)分析需求、構(gòu)思算法邏輯,也不深入理解代碼背后的原理與設(shè)計(jì)模式。
比如開發(fā)數(shù)據(jù)庫連接模塊時(shí),不思考如何優(yōu)化連接池配置,直接使用 AI 生成的默認(rèn)代碼;設(shè)計(jì)復(fù)雜業(yè)務(wù)流程,不進(jìn)行架構(gòu)規(guī)劃,盲目套用 AI 提供的解決方案。這不僅導(dǎo)致代碼質(zhì)量參差不齊,也讓程序員逐漸喪失獨(dú)立編碼與解決問題的能力。AI 雖強(qiáng)大,但它的 “思考” 是基于數(shù)據(jù)訓(xùn)練,無法替代程序員對(duì)業(yè)務(wù)的理解、對(duì)技術(shù)的創(chuàng)新探索。
當(dāng)人放棄思考,就如同失去靈魂的軀殼,難以形成獨(dú)特見解,創(chuàng)造力也會(huì)被逐漸磨滅。長此以往,人類將在思維的 “溫床” 中喪失進(jìn)步的動(dòng)力。唯有保持主動(dòng)思考,將 AI 作為輔助工具,才能真正發(fā)揮其價(jià)值,成為優(yōu)秀的開發(fā)者。
當(dāng)看到一些不好的代碼時(shí),會(huì)發(fā)現(xiàn)我還算優(yōu)秀;當(dāng)看到優(yōu)秀的代碼時(shí),也才意識(shí)到持續(xù)學(xué)習(xí)的重要!--buguge
本文來自博客園,轉(zhuǎn)載請(qǐng)注明原文鏈接:http://www.rzrgm.cn/buguge/p/18836688
posted on 2025-04-20 12:03 buguge 閱讀(145) 評(píng)論(0) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號(hào)