知识卡片

语言和框架的层层封装,让代码质量问题被隐藏而非真正消失

普通读书笔记卡

内容

一种曾经流行的观点认为,程序员真正该花精力的地方是需求文档、功能设计、架构设计、理解原理,”写代码”本身只是把想法翻译成编程语言,是没什么技术含量的事情。随着编程语言越来越高级、框架和库的封装越来越完善,这个判断在某种意义上正在变成现实——依靠层层封装,程序员不再需要了解任何底层技术细节,只要把需求逐行”翻译”成代码就能让程序跑起来,而且这堆代码即使写得很差,往往依然能够正常工作、通过测试、顺利上线,甚至运行很长时间都不出问题。从不接触代码的人(比如管理者)的视角看,”代码编译过了,测试过了,上线运行了一个月都没出问题”这个结果本身,看不出任何异样,似乎没有理由要求更多。但这掩盖了一个关键区别:语言和框架的封装确实降低了”让代码能跑起来”的门槛,却完全没有降低”写出可维护、可理解、可扩展的代码”这件事本身的难度——技术门槛的降低,让原本因为写不出能跑的代码而被挡在门外的人也能顺利产出代码,但这些代码内在的组织质量、可理解性、面向未来变化的适应能力,并不会因为它”能跑”就自动变好。这个案例揭示了一个容易被误判的现象:一段代码”能正常工作”这个结果本身,几乎不能作为判断这段代码质量的可靠依据——质量问题往往要等到写这段代码的人离开、或者需求发生变化需要修改这段代码时,才会以一种代价高昂的方式暴露出来,而在此之前,它看起来和”好代码”没有任何区别。

参考来源

- 位置:《高可用架构(第1卷)》第5章《运维保障》"5.5 系统运维之为什么每个团队存在大量烂代码"节,"5.5.1 写烂代码很容易"(源文件:_epub-src/OEBPS/Text/Chapter5_5_2.xhtml) - 结论依据:原文说明"语言越来越高级、封装越来越完善……依靠层层封装,程序员不需要了解一丁点技术细节,只要把需求里的内容逐行翻译出来就可以了……即使我认为他们写的代码是垃圾,但是从不接触代码的人的视角来看……代码编译过了,测试过了,上线运行了一个月都没出问题,你还想要奢求什么?",直接支撑本卡片结论。 - 原始内容:语言越来越高级、封装越来越完善,各种技术都在帮助程序员提高生产代码的效率,依靠层层封装,程序员不需要了解一丁点技术细节……即使我认为他们写的代码是垃圾,但是从不接触代码的人的视角来看……你还想要奢求什么?