思维整洁之道 编写与头脑合拍的卓越代码 (丹)马克·泽曼 著 余晟 译
正版图书
¥
39
3.6折
¥
109
全新
仅1件
作者 [丹麦]马克·泽曼
出版社 电子工业出版社
出版时间 2018-10
版次 1
装帧 平装
货号 C172
上书时间 2024-08-14
商品详情
品相描述:全新
图书标准信息
作者
[丹麦]马克·泽曼
出版社
电子工业出版社
出版时间
2018-10
版次
1
ISBN
9787121483080
定价
109.00元
装帧
平装
开本
16开
页数
328页
字数
360.8千字
【内容简介】
软件开发既需要理论和科学,也需要经验和手艺。可惜,一直以来许多图书都只关注前一部分,而忽略了后一部分。mark 的这本书主要关注的是经验和手艺的部分。本书既详细讲解了 api 设计、红绿重构等常用技术,也演示了如何撰写提交说明、如何修改单元测试,同时对故障定位、代码阅读、团队合作等传统上被认为“难以说清”的话题,也给出了实用而且精当的建议。难能可贵的是,与其他图书提供的示例代码库不同,本书的示例代码库包含了完整的 git 提交记录。也是说,读者可以按照作者的路径,一步一个脚印地重温整个开发过程。如果你的经验还不够丰富,建议严格按照作者的讲解,认真读书,掌握软件工程的。如果你已经有足够的开发经验,不妨在速览全书后,精读自己不熟悉但感兴趣的部分。对自己不认同的部分,也不妨花时间了解作者主张的前因后果,让自己对许多问题有更全面的认知。全书以 c 为示范语言,但并没有用到太多 c 的专属特。面对示例代码,任何熟悉现代主流面向对象语言的读者,都可以很容易地理解作者背后的思。
【目录】
部分 由慢到快 章 是艺术,还是科学 1.1 盖房子 1.1.1 项目论之误 1.1.2 阶段论之误 1.1.3 依赖 1.2 培育花园 1.2.1 花园中的植物为何会生长 1.3 工程 1.3.1 作为手工艺品的软件 1.3.2 实用 1.3.3 软件工程的早期表述 1.3.4 与软件工程共同进步 1.4 结论 第2章 checklist 2.1 助记工具 2.2 针对新代码库的checklist 2.2.1 使用git 2.2.2 自动化构建 2.2.3 显示所有错误消息 2.3 为已有的代码库新增检查规则 2.3.1 渐进式开发 2.3.2 在组织中“便宜行事” 2.4 结论 第3章 控制复杂 3.1 目标 3.1.1 可持续 3.1.2 价值 3.2 为何编程是困难的 3.2.1 人脑类比 3.2.2 读得多、写得少的代码 3.2.3 可读 3.2.4 脑力劳动 3.3 关于软件工程 3.3.1 与计算机科学的关系 3.3.2 人化代码 3.4 结论 第4章 垂直切片 4.1 从能使用的软件开始 4.1.1 从数据入到数据持久化 4.1.2 小的垂直切片 4.2 活动骨架 4.2.1 特征测试 4.2.2 预备-执行-断言 4.2.3 静态代码分析的合理尺度 4.3 由外到内 4.3.1 接收json 4.3.2 提交预订请求 4.3.3 单元测试 4.3.4 dto和领域模型 4.3.5 对象 4.3.6 reitory接 4.3.7 reitory中的create方法 4.3.8 配置依赖关系 4.4 完成切片 4.4.1 schema 4.4.2 sql reitory 4.4.3 连接数据库的配置 4.4.4 冒烟测试 4.4.5 使用fake数据库的边界测试 4.5 结论 第5章 封装 5.1 保存数据 5.1.1 代码改动优先级的原则 5.1.2 参数化测试 5.1.3 把dto复制到领域模型中 5.2 验证 5.2.1 错误的期 5.2.2 红绿重构 5.2.3 自然数 5.2.4 tel定律 5.3 保护不变量 5.3.1 恒常有效 5.4 结论 第6章 三角测量 6.1 短期记忆与长期记忆 6.1.1 遗留代码和记忆 6.2 能力 6.2.1 超订 6.2.2 恶魔的辩词 6.2.3 已有的预订记录 6.2.4 恶魔的辩词 vs 红绿重构 6.2.5 多少测试才算够 6.3 结论 第7章 分解 7.1 代码腐化 7.1.1 阈值 7.1.2 圈复杂度 7.1.3 80/24规则 7.2 与思维合拍的代码 7.2.1 六角花 7.2.2 内聚 7.2.3 依恋情结 7.2.4 类型转换的代价 7.2.5 解析,而不是验证 7.2.6 分形架构 7.2.7 清点变量 7.3 结论 第8章 api设计 8.1 api设计原则 8.1.1 预设用法 8.1.2 错设计 8.1.3 写给读者看的代码 8.1.4 比起注释,花更多精力在代码的命名上 8.1.5 蒙住名字 8.1.6 命令与查询分离 8.1.7 交流的层次 8.2 api设计实例 8.2.1 领班 8.2.2 与封装对象交互 8.2.3 实现细节 8.3 结论 第9章 团队合作 9.1 git 9.1.1 提交说明 9.1.2 持续集成 9.1.3 小步提交 9.2 代码的集体所有权 9.2.1 结对编程 9.2.2 团伙编程 9.2.3 code review的延迟 9.2.4 拒绝某个变更集 9.2.5 code review 9.2.6 pull request 9.3 结论 第2部分 由快到稳 0章 新增代码 10.1 功能标识 10.1.1 历标识 10.2 绞杀榕模式 10.2.1 方法层面的绞杀榕 10.2.2 类层面的绞杀榕 10.3 版本管理 10.3.1 事先警告 10.4 结论 1章 修改单元测试 11.1 重构单元测试 11.1.1 修改安 11.1.2 添加新测试代码 11.1.3 分开重构测试代码和生产代码 11.2 见证测试失败 11.3 结论 2章 故障排除 12.1 理解 12.1.1 科学方法 12.1.2 简化 12.1.3 橡皮鸭法 12.2 缺陷 12.2.1 通过测试重现缺陷 12.2.2 慢速测试 12.2.3 非确定缺陷 12.3 二分法 12.3.1 用git完成二分法 12.4 结论 3章 关注点分离 13.1 组合 13.1.1 嵌套组合 13.1.2 顺序组合 13.1.3 引用透明 13.2 横切面关注点 13.2.1 志 13.2.2 装饰器 13.2.3 志写什么 13.3 结论 4章 节奏 14.1 个人节奏 14.1.1 时间段 14.1.2 休息 14.1.3 有意识地利用时间 14.1.4 盲打 14.2 团队节奏 14.2.1 定期更新依赖项 14.2.2 安排其他事务 14.2.3 康威定律 14.3 结论 5章 常见困惑 15.1 能 15.1.1 历史负担 15.1.2 一厢情愿的依托 15.2 安全 15.2.1 stride 15.2.2 欺骗 15.2.3 篡改 15.2.4 否认 15.2.5 信息泄露 15.2.6 拒绝服务 15.2.7 提权 15.3 其他技术 15.3.1 基于属的测试 15.3.2 行为代码分析 15.4 结论 6章 代码库导览 16.1 导航 16.1.1 看到全局图景 16.1.2 文件组织 16.1.3 寻找细节 16.2 架构 16.2.1 单体架构 16.2.2 循环依赖 16.3 使用方法 16.3.1 从测试中学 16.3.2 用心聆听测试 16.4 结论 附录a 实践列表 参资料
点击展开
点击收起
— 没有更多了 —
以下为对购买帮助不大的评价