2.5 Git的良好使用习惯 . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.5.1 提交注释的质量 . . . . . . . . . . . . . . . . . . . . . . . 10
2.6 常用的工作模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.6.1 本地特性分支 . . . . . . . . . . . . . . . . . . . . . . . . 10
2.7 代码审阅和Gerrit . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.8 Git的缺点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.9 相关知识 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.9.1 几种协议 . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.10 课后练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.11 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.12 参考阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3 持续集成 13
3.1 环境准备 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 持续集成流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3 Maven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3.1 安装Maven . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3.2 Maven仓库管理器:Nexus . . . . . . . . . . . . . . . . . . . 14
3.3.3 第一个maven命令 . . . . . . . . . . . . . . . . . . . . . . . 15
3.3.4 体会两层缓存 . . . . . . . . . . . . . . . . . . . . . . . . 15
3.4 持续集成服务器:Jenkins . . . . . . . . . . . . . . . . . . . . . . 16
3.4.1 安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.4.2 安装Git插件 . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.4.3 系统配置Maven . . . . . . . . . . . . . . . . . . . . . . . . 16
3.4.4 设置构建任务 . . . . . . . . . . . . . . . . . . . . . . . . 16
3.5 如何实施持续集成 . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.6 相关知识 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.7 课后练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.8 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.9 参考阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4 如何写好Java程序 19
4.1 环境准备 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.2 代码风格和编程规范 . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.3 安全代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.4 单元测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.5 代码覆盖率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.6 重构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.7 测试驱动开发 TDD . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.7.1 测试驱动开发的步骤 . . . . . . . . . . . . . . . . . . . . . 21
4.7.2 单元测试就是文档 . . . . . . . . . . . . . . . . . . . . . . 22
4.7.3 单元测试也要重构 . . . . . . . . . . . . . . . . . . . . . . 22
4.8 测试模拟(Mock) . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.9 课后练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.10 参考阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22