5.31和读书笔记(代码大全2)
今天对c++重修课进行了复习 同时上了数据结构重修课
接续前文读完《代码大全 2》14 至 35 章,全书的编程思想彻底形成闭环。如果说前二十三章主要讲解基础编码规范、代码细节打磨、日常纠错与小规模重构,那么 14 章之后的内容,跳出了单行代码、单个子程序的局限,从系统全局、性能优化、团队工程、个人心智、软件交付全周期讲解高质量开发逻辑,也彻底打破了我对于 “优秀代码 = 简洁高效” 的片面理解,读懂了软件工程取舍、平衡、克制的底层逻辑。14 到 19 章聚焦系统级代码构建,包含不常见的数据结构、控制结构、代码整合,此前我编写程序只会惯性使用数组、if 循环、for 循环等基础结构,遇到复杂数据关联、状态流转场景,只会堆砌基础语句,导致代码臃肿冗余。书中详细介绍了表驱动法、状态机、递归、协同程序等小众但高效的控制方案,让我明白不要用单一工具解决所有问题,表驱动法可以大批量简化冗长的 if-else 分支,状态机能理清混乱的业务流转,比起盲目拆分函数,选对底层数据与控制结构,才是从根源简化代码。同时书中着重提醒递归的使用边界,新手容易陷入递归层数溢出、循环逻辑混淆的误区,递归适合层级清晰、无重复计算的场景,但凡可以用迭代替代,都优先选择迭代,避免隐性的系统风险,这纠正了我为追求代码简短滥用递归的习惯。
20 至 24 章围绕软件质量与性能优化展开,彻底推翻了我过早优化、盲目优化的错误认知。过去写代码总会下意识提前思考运行速度,为了几毫秒的性能提升,写出晦涩难懂、难以维护的代码。书中明确提出软件开发黄金准则:先保证正确、可读、健壮,再追求速度。绝大多数软件 95% 的性能瓶颈都集中在极小部分代码中,其余代码无论怎么优化,都无法感知性能差异。真正的性能优化从来不是凭感觉修改,而是依靠性能剖析工具定位瓶颈,从算法、数据结构、资源调用三个维度微调,而非改动业务逻辑。除此之外,这几章重新定义了软件质量,质量不只是没有 bug,还包含可读性、可移植性、可复用性、容错性,很多时候为了兼容多系统、适配后续迭代,适当牺牲一点点运行效率,换取长期可维护性,才是理性的取舍。同时书中对代码复用的解读也令我警醒,复用不是无脑复制粘贴代码,复制粘贴会带来漏洞扩散、维护不同步的隐患,真正的复用是抽取公共模块、标准化接口,实现一处修改、全局生效。
25 至 30 章是全书偏向工程实践的核心内容,涵盖代码整合、单元测试、调试策略、系统集成。以往我始终混淆调试与测试的边界,认为测试就是找出 bug,调试就是修改 bug,做事毫无章法。书中区分了二者的底层逻辑:测试是主动设计用例寻找缺陷,带有预判性;调试是 bug 出现后的被动补救,带有随机性。高效的开发者不会把精力全部放在事后调试,而是提前通过单元测试、断言、日志埋点,降低调试难度。同时书中分享的系统化调试思维改变了我以往盲目打印日志排查问题的陋习,遇到 bug 先复现问题、隔离变量、构建假设、验证假设,遵循科学流程排查,远比逐行阅读代码效率更高。而代码集成章节点明了频繁集成、小批量集成的优势,长时间单独开发后一次性合并代码,必然会爆发海量冲突,碎片化、常态化的合并,是降低团队集成风险最简单有效的手段。
最后 31 至 35 章回归开发者本身,讲述个人编程素养、团队协作规范、软件文档与项目管理。这部分跳出了纯代码技术层面,直指程序员容易忽略的软实力。我从前认为文档无关紧要,只要代码能跑就无需补充辅助文档,但书中提出,代码只能描述 “怎么做”,无法描述 “为什么这么做”,架构设计、核心业务取舍、外部依赖说明,都必须依靠文档留存,随着人员更迭、项目迭代,文档是团队知识传承的唯一载体。而个人编程习惯上,书中提倡自律化编码,不靠临时记忆维护代码,始终保持统一命名、统一格式、统一容错逻辑,哪怕独立开发也要遵守规范,规范不是给他人看,而是降低自己日后回看代码的理解成本。对于团队协作,代码评审不是挑错,而是互相补齐思维盲区,避免个人思维定式带来的隐蔽漏洞,评审重点关注逻辑合理性、边界容错、可读性,而非纠结缩进、命名这类细微格式。
纵观全书 14 到 35 章,再结合前半部分内容,我读懂了《代码大全 2》的核心主旨:编程从来不是一门炫技的手艺,而是一门权衡取舍的工程科学。初级程序员追求实现功能、语法花哨,中级程序员追求代码简洁、运行高效,高级程序员追求系统稳定、迭代从容、协作顺畅。所有高质量的软件,都离不开克制、保守、严谨的开发思维,不盲目追新、不盲目优化、不急于求成。在今后的编码学习中,我会摒弃速成思维,把全书学到的规范落地到每一次编码中,兼顾代码短期可用性和长期维护性,平衡技术效率与团队协作,从只会写能运行的代码,转变为会写符合工程标准的高质量代码。

浙公网安备 33010602011771号