为什么很多程序员越写越慢?真正的原因往往不是不够努力,而是被一些看似无关的细节悄悄偷走了时间:上下文切换、不清晰的命名、过长的函数,以及从未被认真对待的测试。
当一个项目从几十行代码长成几十万行,最难的部分早已不是写出新的功能,而是让旧的代码仍然可以被理解。速度感是结果,秩序才是前提。
一、命名是阅读速度的瓶颈
读代码的时间远远超过写代码的时间。一个变量取名 tmp,在三行代码里无伤大雅;散落在几千行代码里,每一次都要花额外的认知去猜它的含义,日积月累就是几小时。
好的命名通常具有三个特征:讲清楚它是什么,而不是它现在是什么值;与所在层级的抽象保持一致;必要时带单位或边界,例如 timeout_ms 而不是 timeout。当命名不再需要注释来解释,代码本身就具备了可读性。
二、函数越短,越像故事
把一个长函数拆短不是为了显得优雅,而是为了降低一次理解所需的脑容量。一个函数只做一件事,意味着测试只需要覆盖一种情况,调试时只需要怀疑一小段代码。
如果一段函数同时修改状态、写日志、调用网络、保存文件,那么当线上出现异常时,没有人能立刻说清楚是哪一步出了问题。拆分得越清晰,排错路径越短。
三、测试不是负担,是地图
很多人不喜欢写测试,是因为把测试当成了工作量。但当一个项目没有测试,新人不敢改动旧代码,怕一改就崩;老人则陷入“只有我能动”的困境,越维护越慢。
测试更像是项目的地图:它告诉你哪些路径是已经被验证的,哪些还是未知。沿着已被验证的路径继续扩展,比在黑暗里摸索要快得多,也安全得多。
四、上下文切换的真实成本
很多人以为同时处理多个任务效率更高,但编程是一种高度依赖连续思维的工作。一次上下文切换之后,重新读懂刚才那段代码,常常要花上几分钟。
于是“保护连续性”比“多线程工作”更重要:把大块时间留给真正复杂的逻辑,把消息、邮件、会议放在固定窗口处理。代码世界奖励的是深度,而不是反应速度。
五、写作能力,是程序员的隐藏加速器
写注释、写设计文档、写 commit message,这些看起来和“写代码”无关的能力,其实直接决定了一个项目的协作速度。一个能写清楚三句话的设计师,可以让团队少开三次会。
写代码是一种把思想固化的方式,而写作是把思想先整理清楚的方式。先写后写,差别巨大。
所以,越写越快并不是因为天赋异禀,而是因为每一处命名、每一段函数、每一次测试,都在悄悄降低下一次工作的成本。技术会更新,框架会换代,但这种朴素的秩序感,一直是程序员最可靠的加速器。