代码大全2读后感1
读《代码大全2》之前,我对“会写Java”的理解很具体:SpringBoot能跑起来,Controller、Service、Mapper能分层,作业提交后页面能点得动,就算过关。大二下的课程设计我就是这么过来的——遇到不会的功能,打开浏览器搜“Java 实现XXX”,找一段长得像的代码,改改变量名,粘进去,跑通就关掉。至于那段代码为什么这么写、换一个场景还对不对,我很少追问。AI工具普及之后,这个循环甚至变得更短了:把需求丢给Copilot,几秒钟Controller和Mapper全给你生成出来,看起来比我自己写的还规整。
但《代码大全2》里有一组区分,把我这种状态说得很透:“在一种语言下编程”和“深入一门语言去编程”。前者是用语言的表面特性拼凑能跑的东西,后者是先想清楚要表达什么,再用语言去实现它。我大二上的大量时间,其实都停在第一种。AI恰恰最擅长替我完成第一种:它吃过海量的Java样板代码,生成一个CRUD接口的正确率很高,但它不知道我这个作业的业务约束是什么,不知道数据库字段在真实场景里会不会出现空值,更不会替我想“这个功能到底该不该这么设计”。它生成的是“通用片段”,而我如果只会粘贴,就只是在用一种更快的速度停留在表面。
这让我重新理解了大二正在学的那些“枯燥”东西。Java的封装、继承、多态,课堂上讲的时候觉得抽象,但它们其实是让我从“拼句子”转向“写文章”的语法底座。如果我不清楚一个接口为什么这样抽象、一个类为什么该隐藏内部状态,AI生成的代码在我手里就只是一段黑箱,出了bug我连从哪里下手都不知道。有学长分享过一个很真实的经历:AI生成的多线程代码怎么调都不对,最后是回到教材,从锁机制和线程通信逐行排查才解决。AI能写出看起来正确的东西,但它不承担“为什么对”的责任,而那个责任,迟早要落回到写代码的人身上。
所以这本书对我当下最实际的意义,不是让我立刻去啃架构设计那些还读不懂的章节,而是给了一个判断标准:一段代码值不值得留,不看它跑没跑通,看它有没有被我想清楚过。AI可以继续用,但它应该是被我“深入一门语言”之后用来加速的工具,而不是替我完成“深入”这个动作的替身。

浙公网安备 33010602011771号