《构建之法》阅读笔记(二)
一、个人开发流程(PSP):数据驱动的自我进化
PSP的核心价值与误区
量化管理:通过记录任务耗时、缺陷类型、代码量等数据,识别效率瓶颈(如调试耗时占比过高、时间估算偏差)。
常见误区:
跳过设计:直接编码导致后期频繁返工(设计阶段1小时可节省编码阶段10小时)。
忽视时间估算:主观低估任务耗时,导致进度失控。
不记录缺陷:相同错误重复出现,缺乏系统性改进策略。
PSP实践框架
阶段 关键活动 数据记录重点
计划(Planning) 需求分析、时间预估、任务拆分 预估时间 vs 实际耗时
开发(Development) 设计文档、编码、代码复审 缺陷类型分布(如空指针异常)
总结(Postmortem) 分析时间偏差、缺陷根源、提出改进计划 高频缺陷原因复盘
案例:某学员通过PSP发现调试耗时占开发总时长60%,针对性加强单元测试后效率提升30%。
二、单元测试:代码质量的基石
单元测试的标准化实践
核心标准(书中强调的9项原则):
独立性:测试不依赖其他模块,可构造模拟数据保证隔离性。
全覆盖性:覆盖所有代码路径(包括异常处理分支)。
快速执行:单个测试秒级完成,避免影响开发节奏。
自动化集成:纳入CI/CD流水线,随代码提交自动运行。
回归测试的联动价值
防退化机制:在新版本运行历史通过的单元测试,验证新代码未破坏旧功能。
自动化必要性:手动回归测试成本高,自动化框架(如VSTS)可快速验证全量功能。
三、效能分析:优化需科学定位瓶颈
两种方法的互补使用
方法 原理 优点 局限
抽样(Sampling) 间隔采样程序运行状态 无需修改代码,速度快 数据不精确,难定位调用树
代码注入(Instrumentation) 注入监控代码记录每步执行 数据精准,可分析调用关系树 影响真实性能,数据量大
最佳实践:先用抽样定位瓶颈模块(如某函数耗时长),再用代码注入深入分析该模块。
避免盲目优化
关键指标:关注本函数时间(Exclusive Time)与调用树(Call Tree),优先优化高频调用且耗时的函数。
反例:优化仅占运行时1%的代码,投入产出比极低。
四、个人反思:从理论到行动的跨越
过去实践的典型问题
设计缺失:曾直接编码数据库模块,因接口设计不合理导致后期70%代码重构。
缺陷重复:未记录“空指针异常”解决方案,同类问题在三个项目中重复出现。
改进策略
设计先行:强制5分钟伪代码设计,明确输入/输出边界。
缺陷库建设:用Markdown表格记录Bug现象、原因、修复方法,定期复盘高频类型。
Git关联缺陷:Commit信息标注缺陷类型(如[NULL_POINTER]),便于追溯。
总结:工程师的自我修养
“PSP不是束缚,而是照亮效率盲区的灯塔”。
个人技术流程的规范化(单元测试、效能分析)与数据化(PSP记录)是工程师进阶的分水岭——
它让隐性的经验变为显性的优化路径,让偶然的成功沉淀为可复制的工程能力

浙公网安备 33010602011771号