【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

“完成”宣言

  • 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:021770
用户头像

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

关注

评论

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

点云标注在自动驾驶中的重要性

来自四九城儿

深耕行业创新 引领视听未来 | 宇视亮相北京Infocomm China 2023展会

新消费日报

【我和openGauss的故事】记一次基于在银河麒麟系统上适配openGauss进阶之旅

daydayup

百亿规模京东实时浏览记录系统的设计与实现 | 京东云技术团队

京东科技开发者

数据 离线 企业号 7 月 PK 榜 浏览记录

什么是大规模敏捷SAFe?SAFe大规模敏捷管理工具

顿顿顿

敏捷开发 safe 大规模敏捷 scrum工具

博睿数据获聘信通院DGA首批智库专家组

博睿数据

可观测性 智能运维 博睿数据 信通院 专家智库

敏捷领导力 (CAL E+O / ALJ) 认证

ShineScrum捷行

【我与openGauss的故事】openGauss 5.0企业版主从部署,实战狂飙

daydayup

opengauss

百度知道上云与架构演进

百度Geek说

云原生 架构演进 业务上云 企业号 7 月 PK 榜

Jedis 参数异常引发服务雪崩案例分析

vivo互联网技术

服务雪崩 Redis集群模式 主从切换 Jedis参数设置

【我和openGauss的故事】 openGauss 5.0.0 分区表增强

daydayup

opengauss

openGauss数据库源码解析系列文章——AI技术(二)

daydayup

opengauss

软件测试 | 一个简单的Java范例

测吧(北京)科技有限公司

测试

揭秘高新技术发展最新趋势,程序猿视角下的技术革新感悟 | 社区征文

三掌柜

年中技术盘点

掌数科技携手华为云GaussDB,助力金融科技创新,联合打造行业标杆

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

用热爱,走一些“远”路!

禅道项目管理

12 点半!Voxel51 亚太地区计算机视觉线上 Meetup,速来!

Zilliz

计算机视觉 Milvus Zilliz voxel51

【我和openGauss的故事】openGauss逻辑备份恢复

daydayup

对线面试官-Redis 十一 | 双写一致性问题

派大星

Java 面试题

openGauss DBMind上的多指标关联性分析介绍

daydayup

opengauss

实现在线直播源码高质量直播体验重要功能_山东布谷科技创作

山东布谷科技

软件开发 直播 源码搭建 直播源码 在线直播源码

为什么要做稳定性保障?

老张

SRE 稳定性保障

质效两全:媒体服务的创新“顶设”

阿里云视频云

云计算 视频云

AIGC第一波裁员已至

互联网工科生

人工智能 裁员 AIGC

MobPush 推送限制策略

MobTech袤博科技

程序员 前端 push 智能推送 推送

云原生机甲的构想

如水

云原生 servicemesh 云原生机甲 CloudMecha

【我和openGauss的故事】openGauss特性:CM支持两节点部署特性

daydayup

openGauss资源池化开发者入门指南

daydayup

opengauss

订单逆向履约系统的建模与PaaS化落地实践 | 京东云技术团队

京东科技开发者

领域建模 企业号 7 月 PK 榜 订单逆向履约 快退

@Lazy 注解为啥就能破解死循环?

江南一点雨

Java spring

点云标注在自动驾驶中的挑战

来自四九城儿

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