肯特·贝克:改变人生的代码整理魔法

2017 年 11 月 22 日 Linux中国 译者:geekpi
本周我一直在整理 Facebook 代码,而且我喜欢这个工作。我的职业生涯中已经整理了数千小时的代码,我有一套使这种整理更加安全、有趣和高效的规则。
-- Kent Beck


本文导航
编译自 | https://www.facebook.com/notes/kent-beck/the-life-changing-magic-of-tidying-up-code/1544047022294823/ 
 作者 | Kent Beck
 译者 | geekpi

本文作者肯特·贝克Kent Beck,是最早研究软件开发的模式和重构的人之一,是敏捷开发的开创者之一,更是极限编程和测试驱动开发的创始人,同时还是 Smalltalk 和 JUnit 的作者,对当今世界的软件开发影响深远。现在 Facebook 工作。

本周我一直在整理 Facebook 代码,而且我喜欢这个工作。我的职业生涯中已经整理了数千小时的代码,我有一套使这种整理更加安全、有趣和高效的规则。

整理工作是通过一系列短小而安全的步骤进行的。事实上,规则一就是如果这很难,那就不要去做。我以前在晚上做填字游戏。如果我卡住那就去睡觉,第二天晚上那些没有发现的线索往往很容易发现。与其想要一心搞个大的,不如在遇到阻力的时候停下来。

整理会陷入这样一种感觉:你错失的要比你从一个个成功中获得的更多(稍后会细说)。第二条规则是当你充满活力时开始,当你累了时停下来。起来走走。如果还没有恢复精神,那这一天的工作就算做完了。

只有在仔细追踪其它变化的时候(我把它和最新的差异搞混了),整理工作才可以与开发同步进行。第三条规则是立即完成每个环节的工作。与功能开发所不同的是,功能开发只有在完成一大块工作时才有意义,而整理是基于时间一点点完成的。

整理在任何步骤中都只需要付出不多的努力,所以我会在任何步骤遇到麻烦的时候放弃。所以,规则四是两次失败后恢复。如果我整理代码,运行测试,并遇到测试失败,那么我会立即修复它。如果我修复失败,我会立即恢复到上次已知最好的状态。

即便没有闪亮的新设计的愿景,整理也是有用的。不过,有时候我想看看事情会如何发展,所以第五条就是实践。执行一系列的整理和还原。第二次将更快,你会更加熟悉避免哪些坑。

只有在附带损害的风险较低,审查整理变化的成本也较低的时候整理才有用。规则六是隔离整理。如果你错过了在编写代码中途整理的机会,那么接下来可能很困难。要么完成并接着整理,要么还原、整理并进行修改。

试试这些。将临时申明的变量移动到它第一次使用的位置,简化布尔表达式(return expression == True?),提取一个 helper,将逻辑或状态的范围缩小到实际使用的位置。

规则

◈ 规则一、 如果这很难,那就不要去做
◈ 规则二、 当你充满活力时开始,当你累了时停下来
◈ 规则三、 立即完成每个环节工作
◈ 规则四、 两次失败后恢复
◈ 规则五、 实践
◈ 规则六、 隔离整理

尾声

我通过严格地整理改变了架构、提取了框架。这种方式可以安全地做出重大改变。我认为这是因为,虽然每次整理的成本是不变的,但回报是指数级的,但我需要数据和模型来解释这个假说。


via: https://www.facebook.com/notes/kent-beck/the-life-changing-magic-of-tidying-up-code/1544047022294823/

作者:KENT BECK[2] 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

LCTT 译者
geekpi 💎 💎
共计翻译: 588 篇
贡献时间:1489 天

推荐文章

< 左右滑动查看相关文章 >

点击图片、输入文章 ID 或识别二维码直达



登录查看更多
0

相关内容

Facebook 是一个社交网络服务网站,于 2004 年 2 月 4 日上线。从 2006 年 9 月到 2007 年 9 月间,该网站在全美网站中的排名由第 60 名上升至第 7 名。同时 Facebook 是美国排名第一的照片分享站点。 2012年 2 月 1 日,Facebook向美国证券交易委员会提交集资规模为 50 亿美元的上市申请。
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
194+阅读 · 2020年6月29日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
《代码整洁之道》:5大基本要点
专知会员服务
49+阅读 · 2020年3月3日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
180+阅读 · 2020年1月1日
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
164+阅读 · 2019年10月28日
物理学家终于找到了一种拯救薛定谔猫的方法
中科院物理所
8+阅读 · 2019年6月10日
你真的会正确地调试 TensorFlow 代码吗?
数据库开发
7+阅读 · 2019年3月18日
我的if else代码纯净无暇,一个字也不能简化
机器之心
3+阅读 · 2018年12月28日
吃鸡手游竟然是Python写的?
机器学习算法与Python学习
7+阅读 · 2018年9月11日
机器学习-我妈妈也能看懂的入门篇
深度学习世界
4+阅读 · 2018年5月16日
可怕,40 行代码的人脸识别实践
51CTO博客
3+阅读 · 2017年7月22日
Arxiv
14+阅读 · 2020年1月27日
A Probe into Understanding GAN and VAE models
Arxiv
9+阅读 · 2018年12月13日
Arxiv
3+阅读 · 2018年11月29日
QuAC : Question Answering in Context
Arxiv
4+阅读 · 2018年8月21日
Arxiv
6+阅读 · 2018年3月29日
Arxiv
4+阅读 · 2018年1月29日
VIP会员
相关VIP内容
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
194+阅读 · 2020年6月29日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
《代码整洁之道》:5大基本要点
专知会员服务
49+阅读 · 2020年3月3日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
180+阅读 · 2020年1月1日
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
164+阅读 · 2019年10月28日
相关资讯
物理学家终于找到了一种拯救薛定谔猫的方法
中科院物理所
8+阅读 · 2019年6月10日
你真的会正确地调试 TensorFlow 代码吗?
数据库开发
7+阅读 · 2019年3月18日
我的if else代码纯净无暇,一个字也不能简化
机器之心
3+阅读 · 2018年12月28日
吃鸡手游竟然是Python写的?
机器学习算法与Python学习
7+阅读 · 2018年9月11日
机器学习-我妈妈也能看懂的入门篇
深度学习世界
4+阅读 · 2018年5月16日
可怕,40 行代码的人脸识别实践
51CTO博客
3+阅读 · 2017年7月22日
相关论文
Arxiv
14+阅读 · 2020年1月27日
A Probe into Understanding GAN and VAE models
Arxiv
9+阅读 · 2018年12月13日
Arxiv
3+阅读 · 2018年11月29日
QuAC : Question Answering in Context
Arxiv
4+阅读 · 2018年8月21日
Arxiv
6+阅读 · 2018年3月29日
Arxiv
4+阅读 · 2018年1月29日
Top
微信扫码咨询专知VIP会员