晾棋砷 发表于 2025-6-1 00:05:47

AI都深度思考了,人却不思考了...

在了解Fastjson编解码Integer数字时,曹小三同学让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
    }
}其中,小三在运行testInvalidFormat时,发现assertThrows不奏效————junit断言JSON.parseObject(json, Model.class)会抛出JSONException,实际却没有抛出。
小三就反馈给DeepSeek。
DeepSeek开启了“一本正经地胡说八道”模式。
小三把这个情况讲给同事赵小四,小四自信地解释道“这是Fastjson在兼容性方面做得好。”
小三、小四的师傅工匠李得知后,一眼发现了问题。原来,上面JUnit代码中,DeepSeek省略了Model类的 getter/setter,加上就好使了。并通过运行testInvalidFormat给两个小伙演示所抛出的异常stacktrace。
点击查看代码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)

小三、小四这才明白这个技术点:
Fastjson对于非Integer数字,是无法反序列化为Integer或int数字的,会抛出异常。


【结语】如今,AI 代码生成工具如 Copilot、Cursor 等,能基于简单提示快速输出代码片段,甚至完成复杂功能模块,其 “思考” 速度与覆盖范围令人惊叹。但不少程序员却因此过度依赖,遇到问题便直接让 AI 生成代码,不再主动分析需求、构思算法逻辑,也不深入理解代码背后的原理与设计模式。
比如开发数据库连接模块时,不思考如何优化连接池配置,直接使用 AI 生成的默认代码;设计复杂业务流程,不进行架构规划,盲目套用 AI 提供的解决方案。这不仅导致代码质量参差不齐,也让程序员逐渐丧失独立编码与解决问题的能力。AI 虽强大,但它的 “思考” 是基于数据训练,无法替代程序员对业务的理解、对技术的创新探索。
当人放弃思考,就如同失去灵魂的躯壳,难以形成独特见解,创造力也会被逐渐磨灭。长此以往,人类将在思维的 “温床” 中丧失进步的动力。唯有保持主动思考,将 AI 作为辅助工具,才能真正发挥其价值,成为优秀的开发者。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: AI都深度思考了,人却不思考了...