《程序员修炼之道:从小工到专家》阅读笔记
作为一名大二计算机专业学生,读《程序员修炼之道》前,我总觉得写代码就是“能跑通功能就行”——课后作业调通逻辑、实验报告凑够代码行数,就算完成任务了。但这本书像给我拉了一把“回头看”的尺子,让我突然意识到,“会写代码”和“能写好代码”之间,差的不只是技术熟练度,更是对待代码的底层思维。
最让我有共鸣的是“破窗效应”那段。之前小组做Java课程设计,要写一个简易计算器,有个同学写的“进制转换”模块里,有段嵌套循环没加注释,变量名还用了“a”“b”“c”,当时大家觉得“反正能算出结果,没必要改”,结果后面要加“小数进制转换”功能时,没人看得懂那段代码,最后只能推翻重写,白白多花了两天时间。原来“小工”和“专家”的差距,从对待“小问题”的态度就开始了——不是等代码出了明显bug才补救,而是看到不规范的地方就及时修正。现在我写作业时,再也不会随便起变量名,哪怕是临时用的循环变量,也会写成“i_loop”“j_index”,注释里也会写清“这段循环用于遍历数组元素,排除负数”,这样自己回头复习时能懂,组队时队友也不用反复问我“这里到底在干嘛”。
书中的DRY原则(不重复自己),我在写数据结构作业时才算真正get到。之前用C语言写链表的增删查改,总习惯在“插入节点”“删除节点”“查找节点”里重复写“判断链表是否为空”的逻辑,每次都是“if (head == NULL) { return NULL; }”,代码又长又容易出错——有次改了“查找”里的判断条件,却忘了改“插入”里的,结果调试了半天都没找到问题。后来照着书里说的,把“判断链表为空”“获取链表长度”这些重复逻辑抽成单独的函数,比如“isListEmpty(LinkedList list)”“getListLength(LinkedList list)”,每次需要时直接调用。不仅代码量少了一半,后来发现“判断空链表”时漏了“尾节点为空”的情况,也只用改一处就行,不用在四个功能里逐个修改。原来DRY不只是“少写几行代码”,更是培养“抽象思维”——之前总觉得“类和接口”是课本上的抽象概念,现在才明白,这些设计思想早就藏在“避免重复”的细节里,帮我们把代码从“堆砖块”变成“搭积木”。
其实这本书没教我复杂的算法,也没讲高深的框架,却让我学会了用“长期主义”看待写代码这件事——对我们大二学生来说,现在写的每一行作业代码,都是在培养未来职业的习惯。以后再写代码时,我会多问自己一句“这样写,别人能看懂吗?以后改需求,方便吗?”,慢慢从“能写代码”向“会写好代码”靠近。