思维整洁之道:编写与头脑合拍的卓越代码(英文版)
正版保障 假一赔十 可开发票
¥
87.22
6.3折
¥
139
全新
库存3件
作者(丹)马克·西曼著
出版社电子工业出版社
ISBN9787121478536
出版时间2024-06
装帧平装
开本其他
定价139元
货号16241458
上书时间2025-01-02
商品详情
- 品相描述:全新
- 商品描述
-
目录
第1部分 由慢到快 第1章 是艺术,还是科学 3 1.1 盖房子 4 1.1.1 项目论之误 4 1.1.2 阶段论之误 5 1.1.3 依赖 5 1.2 培育花园 6 1.2.1 花园中的植物为何会生长 6 1.3 工程 7 1.3.1 作为手工制品的软件 7 1.3.2 实用性 8 1.3.3 软件工程的早期表述 9 1.3.4 与软件工程共同进步 10 1.4 结论 12 第2章 检查清单 13 2.1 助记工具 13 2.2 针对新代码库的检查清单 15 2.2.1 使用Git 16 2.2.2 自动化构建 17 2.2.3 显示所有错误消息 21 2.3 为已有的代码库新增检查规则 25 2.3.1 渐进式开发 26 2.3.2 在组织中“便宜行事” 27 2.4 结论 28 第3章 控制复杂性 29 3.1 目标 30 3.1.1 可持续性 31 3.1.2 价值 31 3.2 为何编程是困难的 33 3.2.1 人脑类比 33 3.2.2 读得多、写得少的代码 35 3.2.3 可读性 35 3.2.4 脑力劳动 36 3.3 关于软件工程 38 3.3.1 与计算机科学的关系 38 3.3.2 人性化代码 39 3.4 结论 40 第4章 垂直切片 41 4.1 从能使用的软件开始 41 4.1.1 从数据入口到数据持久化 42 4.1.2 最小的垂直切片 43 4.2 活动骨架 44 4.2.1 特征测试 45 4.2.2 预备-执行-断言 47 4.2.3 静态代码分析的合理尺度 48 4.3 由外到内 50 4.3.1 接收JSON 52 4.3.2 提交预订请求 54 4.3.3 单元测试 58 4.3.4 DTO 和领域模型 59 4.3.5 伪对象 62 4.3.6 Repository接口 63 4.3.7 Repository中的Create方法 64 4.3.8 配置依赖关系 65 4.4 完成切片 66 4.4.1 schema 67 4.4.2 SQL Repository 68 4.4.3 连接数据库的配置 70 4.4.4 冒烟测试 71 4.4.5 使用伪(Fake)数据库的边界测试 72 4.5 结论 73 第5章 封装 75 5.1 保存数据 75 5.1.1 代码改动优先级的原则 76 5.1.2 参数化测试 77 5.1.3 把DTO复制到领域模型中 79 5.2 验证 80 5.2.1 错误的日期 81 5.2.2 红绿重构 83 5.2.3 自然数 86 5.2.4 Postel定律 89 5.3 保护不变量 92 5.3.1 恒常有效 93 5.4 结论 95 第6章 三角测量 96 6.1 短期记忆与长期记忆 96 6.1.1 遗留代码和记忆 98 6.2 能力 99 6.2.1 超订 99 6.2.2 恶魔的辩词 103 6.2.3 已有的预订记录 105 6.2.4 恶魔的辩词与红绿重构 107 6.2.5 多少测试才算够 110 6.3 结论 110 第7章 分解 112 7.1 代码恶化 112 7.1.1 阈值 113 7.1.2 圈复杂度 114 7.1.3 80/24 规则 116 7.2 与思维合拍的代码 117 7.2.1 六角花 117 7.2.2 内聚 120 7.2.3 依恋情结 123 7.2.4 类型转换的代价 124 7.2.5 解析,而不是验证 125 7.2.6 分形架构 129 7.2.7 清点变量 132 7.3 结论 133 第8章 API设计 135 8.1 API设计原则 135 8.1.1 预设用法 136 8.1.2 防错设计 138 8.1.3 写给读者看的代码 139 8.1.4 比起注释,花更多精力在代码的命名上 140 8.1.5 蒙住名字 141 8.1.6 分离命令与查询 143 8.1.7 交流的层次 146 8.2 API设计实例 146 8.2.1 领班 147 8.2.2 与封装对象交互 149 8.2.3 实现细节 152 8.3 结论 153 第9章 团队合作 155 9.1 Git 156 9.1.1 提交说明 156 9.1.2 持续集成 159 9.1.3 小步提交 161 9.2 代码的集体所有权 164 9.2.1 结对编程 166 9.2.2 团伙编程 167 9.2.3 代码审校的延迟 168 9.2.4 拒绝某个变更集 170 9.2.5 代码审校 171 9.2.6 拉取请求 172 9.3 结论 173 第2部分 由快到稳 第10章 充实代码 177 10.1 功能标识 178 10.1.1 日历标识 178 10.2 绞杀榕模式 183 10.2.1 方法层面的绞杀榕 184 10.2.2 类层面的绞杀榕 187 10.3 版本管理 191 10.3.1 事先警告 192 10.4 结论 192 第11章 修改单元测试 194 11.1 重构单元测试 194 11.1.1 修改安所有渠道 194 11.1.2 添加新测试代码 195 11.1.3 分离对测试代码和对生产代码的重构 198 11.2 见证测试失败 204 11.3 结论 204 第12章 故障排除 205 12.1 理解 205 12.1.1 科学方法 206 12.1.2 简化 207 12.1.3 橡皮鸭法 208 12.2 缺陷 209 12.2.1 像做测试那样重现问题 209 12.2.2 慢速测试 212 12.2.3 非确定性缺陷 214 12.3 二分法 218 12.3.1 用Git完成二分法 219 12.4 结论 222 第13章 关注点分离 224 13.1 组合 225 13.1.1 嵌套组合 225 13.1.2 顺序组合 228 13.1.3 引用透明性 230 13.2 横切面关注点 233 13.2.1 日志 233 13.2.2 装饰器 234 13.2.3 日志写什么 238 13.3 结论 240 第14章 节奏 241 14.1 个人节奏 242 14.1.1 时间段 242 14.1.2 休息 244 14.1.3 有意识地利用时间 245 14.1.4 盲打 246 14.2 团队节奏 247 14.2.1 定期更新依赖项 247 14.2.2 安排其他事务 248 14.2.3 康威定律 249 14.3 结论 250 第15章 常见困惑 251 15.1 性能 252 15.1.1 历史负担 252 15.1.2 可识别性 254 15.2 安全 256 15.2.1 STRIDE 256 15.2.2 欺骗 257 15.2.3 篡改 258 15.2.4 否认 259 15.2.5 信息泄露 259 15.2.6 拒绝服务 261 15.2.7 提权 262 15.3 其他技术 263 15.3.1 基于属性的测试 263 15.3.2 行为代码分析 268 15.4 结论 270 第16章 代码库导览 272 16.1 导航 272 16.1.1 看到全局图景 273 16.1.2 文件组织 276 16.1.3 寻找细节 278 16.2 架构 280 16.2.1 单体系统 280 16.2.2 循环依赖 281 16.3 使用方法 285 16.3.1 从测试中学习 285 16.3.2 用心聆听测试 287 16.4 结论 288 附录A 实践技巧列表 290
内容摘要
软件开发既需要理论和科学,也需要经验和技艺。可惜,一直以来许多图书都只关注前一部分,而忽略了后一部分。马克的这本书主要关注的就是经验和技艺的部分。本书既详细讲解了API设计、红绿重构等常用技术,也演示了如何撰写提交说明、如何修改单元测试,同时对故障定位、代码阅读、团队合作等传统上被认为“难以说清”的话题,也给出了实用且精当的建议。难能可贵的是,与其他图书提供的示例代码库不同,本书的示例代码库包含了完整的Git提交记录。也就是说,读者可以按照作者的道路,一步一个脚印地重温整个开发过程。如果你的经验还不够丰富,建议严格按照作者的讲解,认真读接近书,掌握软件工程的技巧。如果你已经有足够的开发经验,不妨略读全书,精读自己不熟悉但感兴趣的部分。对自己不认同的部分,也不妨花时间了解作者主张的前因后果,让自己对许多问题有更全面的认知。
精彩内容
软件开发既需要理论和科学,也需要经验和技艺。可惜,一直以来许多图书都只关注前一部分,而忽略了后一部分。马克的这本书主要关注的就是经验和技艺的部分。本书既详细讲解了API设计、红绿重构等常用技术,也演示了如何撰写提交说明、如何修改单元测试,同时对故障定位、代码阅读、团队合作等传统上被认为“难以说清”的话题,也给出了实用且精当的建议。难能可贵的是,与其他图书提供的示例代码库不同,本书的示例代码库包含了完整的Git提交记录。也就是说,读者可以按照作者的道路,一步一个脚印地重温整个开发过程。如果你的经验还不够丰富,建议严格按照作者的讲解,认真读接近书,掌握软件工程的技巧。如果你已经有足够的开发经验,不妨略读全书,精读自己不熟悉但感兴趣的部分。对自己不认同的部分,也不妨花时间了解作者主张的前因后果,让自己对许多问题有更全面的认知。
— 没有更多了 —
以下为对购买帮助不大的评价