Skip to content

集成

小周期

小规模发布只是意味着每次发布只修改少量代码。系统也许很大,但对系统的递增改变却很小。

源代码控制的历史

如果你签出这个模块,其他人就不能编辑它,这被称为悲观锁;两个程序员可以同时签出并修改同一个文件,这被称为乐观锁。

GIT

git 将源代码的全部历史记录保存在你的本地机器上。在把改动推送到其他地方之前,你可以自由地做任意多次小提交。

持续集成

提交得越频繁,就越不可能面临合并。而且,如果真的要合并,也会是极小的合并。这种做法叫做持续集成。

持续集成依赖于一套非常可靠的单元测试。持续集成与 TDD 是相辅相成的。

分支与切换

分支只是一种长期签出。事实上,git 真正做的是记录开发者在持续集成周期之间的行为。

持续部署

你准备好部署,并不意味着企业已经准备好部署。作为开发团队中的一员,你的标准是要永远时刻准备好。

部署过程越复杂,部署成本就越昂贵。所有企业的最终目标都是能够持续、安全和无仪式的部署。部署应该尽可能地接近于无事发生。

部署脚本是系统的一部分,因此你要为它们写测试。

持续构建

确保你在每次推送时都启动构建。尽一切努力确保构建不会失败。

持续改进

测试覆盖率

最好的策略是将覆盖率数字作为开发人员工具来帮助你改进代码。100% 的测试覆盖率始终是目标,但它也是一个渐进目标。大多数系统永远达不到 100%,但这不应该阻止你不断地提高覆盖率。

突变测试

100% 的测试覆盖率意味着代码的任何语义变化都会导致测试失败。语义变化是指将 > 变为 <,或者 == 改为 !=,或者 x < <something> 改为 x = null。每个这样的语义变化都被称为突变。

突变测试运行测试集并测量覆盖率。然后它进入一个循环,以某种语义方式修改代码,然后再次运行测试集和覆盖率。我们期望每个突变都不能通过测试。没能通过测试的突变称为幸存突变。我们的目标是确保没有幸存突变。

语义稳定性

测试覆盖率和突变测试的目标是创建确保语义稳定性的测试集。系统的语义是该系统的必要行为。确保语义稳定的测试集是只要有必要行为被破坏时就会失败的测试集。

清理

确保代码保持灵活性的最好方法之一,就是定期对其进行修改。

保持高生产力

要想走得快,唯一的办法就是好好走。

解决注意力分散问题

会议

永远不要害怕离开会议。不要担心错过什么事,如果他们真的需要你,就会来找你。如果你是小组长或经理,请记住你的主要职责之一是捍卫团队生产力,不让下属参加会议。

音乐

编程是通过顺序、条件选择和遍历来安排程序元素的行为;音乐是由通过顺序、条件选择和遍历安排的音调和节奏元素组成的。

听音乐和编程使用了相同的大脑部分,从而消耗了你的部分编程能力。

心情

要想提高生产力,就必须熟练管理自己的情绪状态。

时间管理

使用番茄工作法。

只要你善于把一整天分成多个番茄,并保护每个番茄都不受干扰,你就可以开始通过分配番茄来计划你的一天。你甚至可以开始用番茄来预估任务,并围绕预估结果来计划会议和午餐。

Released under the MIT License.