发布在即!企业 AIGC 应用程度测评,3 步定制专属评估报告。抢首批测评权益>>> 了解详情
写点什么

“完成”宣言

  • 2010-03-20
  • 本文字数:1267 字

    阅读完需:约 4 分钟

Alixx Skevington 贴出一篇“完成宣言”以引发讨论,其中谈到团队成员针对各自的工作质量向彼此做出的承诺,并清晰表明了他们对于使用代码交付业务价值的承诺。

他的“完成”条件列表包括:

  • 我会确保我的代码可用。我的代码是为了供他人使用、与他人交互的,我所写的一切都要保证这是令人愉快的过程,而且应该降低工作量,而不是增加。
  • 我会确保我的代码风格服从团队一致同意的风格。未来会是别人,而不是我,来维护和修补我的代码。所以虽然我可以灵活设计并利用任何技术来构建我的解决方案,我还是会遵循标准,以便于其他人将来维护我的代码。
  • 我同意将我的方法保持在合理的大小。大方法难以查看与调试。我会尽量把我的方法保持在合理的大小,以降低复杂度。
  • 我会注释所有的代码。不管是创建新代码还是变更现有代码,我都会写下简明扼要的注释,说明我做了什么。这样其他人在阅读代码时,就能理解我做了什么以及代码试图实现的目的。
  • 我同意对我的代码做单元测试。我同意让这些测试可以重用、足够健壮。我会确保测试说明它测试的对象及其原因。这样其他人在重构或修复 bug 时,不仅可以运行我的测试,还能了解我的代码试图达到的效果。
  • 我同意维护现有代码的单元测试。当我改变或添加现有代码的新功能时,我会确保所有的测试都可以通过,而且新功能也有对应测试。
  • 我同意努力让我的代码的测试覆盖率达到 80%。检查完代码覆盖率,我就可以确保所写的一切代码都有价值,不存在会在未来产生问题的“惊奇代码”。我会努力让覆盖率更高。
  • 我同意正确检查代码的集成状况。当我写完我的代码后,我会和其他开发人员一起检查我的代码,确保与他人的代码可以一起正确工作,交付客户请求的功能。

这个帖子在 LinkedIn 的讨论组中引发了一些评论,人们建议加入更多列表项,比如:

我会加入“我会在签入代码前重新运行单元测试”。原因在于:看起来不相关的代码可能导致另一处的代码及其测试运行失败。这在我上一个工作中多次发生。(来自 David Kramer

再说说单元测试。实际上,我会将其变为“我愿意在编写代码前先编写单元测试”,因为我笃信 TDD。另一点关于测试的是:它们都是生产代码,要以同等态度对待。(来自 Scott Ames

Scott Mcphee 不同意代码注释那一条:

对于代码注释这一条,我坚决持反对意见。注释常常都是谎言,或者不过是引出明显的东西而已(比如: /* 设置 x 等于 y */ x=y;),而且常常增加负担,人们必须要让其与实际代码保持一致。设计清晰、实现清晰的代码不需要“简明扼要的注释说明我做了什么”,从代码就能明显看出它做了什么,而且配置管理提交的注释和代码中的版本差异应该说明写代码的原因。如果做不到的话,就要重构,以做到这一点。API 文档是完全不同的东东,但其主要是给公开方法的用户看的,而不是代码文件的读者,API 文档也是发布交付物的一部分。

Jay Packlick 加入了他认为至关重要的一点:

“完成”最重要的定义是隐含的,但是最值得留意,我愿意把它放在列表的第一条:所有关于“完成”某个功能的验收条件都要以测试表述,而且都要通过。

您愿意对这个列表做出哪些补充或改变?

查看英文原文: A Manifesto of Done

2010-03-20 00:021754
用户头像

发布了 479 篇内容, 共 151.8 次阅读, 收获喜欢 47 次。

关注

评论

发布
暂无评论
发现更多内容

KMP —— 字符串分析算法

三钻

算法 大前端 KMP

突破容量极限:TiDB 的海量数据“无感扩容”秘籍

京东科技开发者

分布式数据库 #TiDB

教你用Python自制拼图小游戏,轻松搞定熊孩子

华为云开发者联盟

Python 游戏 拼图

低成本快速上链 智臻链开放联盟网络正式对外开放

京东科技开发者

区块链 京东

公安情报研判管控分析平台建设解决方案

t13823115967

智慧公安情报研判系统开发 智慧公安 情报研判管控分析平台

线程上下文切换,这些是你需要掌握的

田维常

系统上下文

App自动化《元素定位方式、元素操作、混合应用、分层设计、代码方式执行Pytest 命令》

清菡软件测试

App

什么是工作流?工作流有什么作用?怎样配置工作流程?

Marilyn

敏捷开发 工作流

我是程序员,我用这种方式铭记历史

kokohuang

Hexo GitHub Pages python 爬虫 中国历史 铭记历史

智慧公安情报指挥合成作战管控平台开发

t13823115967

智慧公安情报研判系统开发 智慧公安 合成作战管控平台

云计算领域-杨明越加入InfoQ协作平台

杨明越

数据资产管理平台规划概要

马踏飞机747

大数据 数据治理 数据资产

源码深度解析 Handler 机制及应用

vivo互联网技术

android 客户端开发

话题讨论 | 作为开发你是如何阅读源码的?

程序员小航

话题讨论

架构师训练营第 1 期第 11 周作业

owl

极客大学架构师训练营

架构师训练营第 1 期第 11 周总结

owl

极客大学架构师训练营

第七周总结

小兵

基于区块链技术落地应用开发-食品溯源

13828808769

探秘密码学:深入了解对称加密与密钥协商技术

京东科技开发者

网络安全 密码学

手撸一个在线css三角形生成器

徐小夕

CSS css3 大前端 CSS小技巧

花火交易所APP软件系统开发(现成)

系统开发

话题讨论 | 深入浅出Linux内存管理,图解物理内存和虚拟内存

程序员柠檬

话题讨论

第十一周 安全稳定作业

蓝黑

极客大学架构师训练营

《写给大忙人看的JAVA核心技术》.pdf

田维常

电子书

话题讨论 | go、php 、java、python、cpp谁才能成为后端的主流

sinsy

Java c++ php 话题讨论 Go 语言

Seata是什么?一文了解其实现原理

vivo互联网技术

分布式 分布式事务 分布式架构

第十一周 安全稳定总结

蓝黑

极客大学架构师训练营

阿里巴巴内部秘密培养的“Java架构师养成计划”图谱曝光,全是干货!

Java架构追梦

Java 学习 架构 面试 阿里巴巴人才培养计划

话题讨论 | 2020年你有什么推荐的书

soolaugust

话题讨论

话题讨论 | 程序员摸鱼的时候都喜欢干些什么

soolaugust

话题讨论

阿里云Lindorm与Intel、OSIsoft共建IT & OT超融合工业数据云

许力

数据库 大数据 IoT 工业互联网 工业物联网

“完成”宣言_研发效能_Shane Hastie_InfoQ精选文章