Kent Beck的test && commit || revert 敏捷协作方法

栏目: 编程工具 · 发布时间: 6年前

内容简介:Kent Beck在Facebook七年期间,目睹Facebook团队从700人扩展到5000多人,如果100,000名工程师如何在同一系统上工作?Facebook的软件工程工作流程相当传统:1.创建差异。

Kent Beck在Facebook七年期间,目睹Facebook团队从700人扩展到5000多人,如果100,000名工程师如何在同一系统上工作?

Facebook的软件工程工作流程相当传统:

1.创建差异。

2.获得审核和批准。

3.把它投入生产。

4.监控意外后果。

与许多代码审查批准工作流程一样,审核步骤引入了不可预测的延迟,导致:

1.较大的差异

2.累计巨大差异

3.多任务处理

关键问题是如何在一份代码上合并多个 程序员 的差异?这个问题其实有点类似技术上分布式事务,如何在多个服务器上复制一样的状态?关键是每个服务器的状态都在变化?

人们代码提交越频繁,越容易发生代码冲突,代码结构如同一个树形结构,某个分支不同,导致后续非常不同,这是不是有些类似区块链,区块链是通过严格控制区块号的顺序实现的,但是在代码协作中,人不是机器,无法排队领号,或者摇号。这会阻止人们的创造精神。

Kent Beck系统找到一种通过减少合并代码变化并提高变化传播的速度和范围来扩展软件项目协作的策略。人们能够越频繁提交,同时将自己的改变快速扩展到其他人代码中,他借用Limbo歌曲中一句话:

How low can you go? 命名这种策略为Limbo。

他提出一个test && commit || revert的具体做法实现Limbo策略:

作为容易操作Limbo策略一部分,我们发明了一种新的编程工作流程。我介绍了“test && commit|| revert”,代码每次运行测试代码正确后都会被提交,如果测试失败,则代码返回到测试最后通过的状态。

Limbo通过立即传播微小变化来扩展技术协作。而传统TDD测试驱动开发将无法在Limbo中运行,在自己的代码变化传播给其他人之前,所有测试都必须通过。

在Git中实际命令是:

git commit -am working

git reset --hard

有人做了一个JS开源项目 limbo-js


import { exec } from 'child_process'

while (true) {
await exec('git pull --rebase -q')

try {
await exec('npm test')
await exec('git add -A && git commit -q')
} catch {
await exec('git reset --hard -q && git clean -fdq')
}

await exec('git push -q')
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

快速转行做产品经理

快速转行做产品经理

李三科 / 华中科技大学出版社 / 2018-6-1 / 39.90

互联网已经进入以产品为中心的时代,不懂技术一样做高薪产品经理。本书将满足你转行、就业、加薪的愿望。 . 作者李三科,互联网资深产品经理。2011年离开传统销售行业进入互联网行业工作,从对产品经理的工作一无所知,到成长为一名年薪几十万的资深产品经理,他对产品经理职业有着深刻的理解,也积累了丰富的学习、工作经验。本书以作者亲身经历为线索,讲解学习产品经理相关知识和工作方法的经验,同时介绍求......一起来看看 《快速转行做产品经理》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具