NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

“完成”宣言

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

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

关注

评论

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

昇腾AI创新大赛2023开发者套件创新赛道专题解读篇

彭飞

小程序开发这么简单,还需要App吗?

FinFish

小程序生态 APP开发 小程序开发

GPT-4被破解!数智时代大突破!低代码开发平台揭秘:AI模型架构演进的利器

不在线第一只蜗牛

人工智能 低代码 模型调参 ChatGPT GPT-4

接口文档阅读方法:程序员必备的技术指南

Liam

程序员 接口文档 API

一个提高go开发效率的秘密武器,一天开发完成一个极简版社区后端服务

vison

crud gorm gin #go 代码自动生成

2023-07-11:给定正整数 n, 返回在 [1, n] 范围内具有 至少 1 位 重复数字的正整数的个数。 输入:n = 100。 输出:10。

福大大架构师每日一题

Go 算法 rust 福大大架构师每日一题

从零开始构建一个电影知识图谱,实现KBQA智能问答[下篇]:Apache jena SPARQL endpoint及推理、KBQA问答Demo超详细教学

汀丶人工智能

人工智能 自然语言处理 知识图谱 智能问答 KBQA

重塑未来的1课:组装式交付新引擎——华为云智能化低代码平台

华为云PaaS服务小智

云计算 低代码 华为云 华为开发者大会

数码时代的奇迹:低代码开发助力数字经济的蓝海探索

快乐非自愿限量之名

人工智能 低代码 数字化 数字经济

科兴未来|“追光逐电 才聚紫琅”光电产业创新创业大赛

科兴未来News

对象存储、数据库、NAS、标注数据集,均支持元信息配置|ModelWhale 版本更新

ModelWhale

人工智能 数据库 云计算 数据分析 大模型

HDC.Cloud 2023 |华为云5大开源项目发布与更新,助力开发者实现应用创新

华为云开源

开源 云原生 HDC.Cloud

谁能真正替代你?AI辅助编码工具深度对比(chatGPT/Copilot/Cursor/New Bing)

快乐非自愿限量之名

工具 ChatGPT AI赋能 AI工具

为什么选择美国虚拟主机是你的明智之选?

一只扑棱蛾子

美国虚拟主机

分布式系统常见问题

互联网工科生

分布式

MatrixOne悲观事务实现

MatrixOrigin

数据库 分布式 云原生 矩阵起源

如果AI能帮我 | 社区征文

六月的雨在InfoQ

AIGC ChatGPT 年中技术盘点 通义听悟

大学生活动社交小程序开发笔记(1)

CC同学

Boundless Hackathon @Stanford 主题黑客松活动闭幕,一文回顾

EOSdreamer111

开启时空大数据新纪元:JNPF快速开发平台引领AI与自然资源融合

EquatorCoco

人工智能 AI 数据 时空大数据

实例分享| anyRTC 部署安徽某市应急实战指挥平台

anyRTC开发者

音视频 快对讲 融合会议 视频监控 综合调度

创新引领!矩阵起源荣获中国信通院双重认可!

MatrixOrigin

数据库 分布式 云原生 超融合 矩阵起源

低代码技术分享官丨inBuilder使用有向无环图助力元数据工程依赖管理

inBuilder低代码平台

浅谈如何向上管理

光毅

团队管理 向上管理

开源铸剑,五载匠心!Zilliz Cloud云服务盛装登场,引领向量数据库云时代!

Zilliz

阿里云 SaaS 云服务 Zilliz zillizcloud

Boundless Hackathon @Stanford 主题黑客松活动闭幕,一文回顾

股市老人

三问三答:细数GaussDB迁移的核心技术

华为云开发者联盟

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

软件测试/测试开发丨Selenium环境安装配置

测试人

Python 程序员 软件测试 selenium chromedriver

从零开始构建一个电影知识图谱,实现KBQA智能问答[上篇]:本体建模、RDF、D2RQ、SPARQL endpoint与两种交互方式详细教学

汀丶人工智能

人工智能 自然语言处理 nlp 知识图谱 本体建模

Cloud Kernel SIG月度动态:ANCK 5.10-016将落地kABI机制,5.10-015版本规划发布

OpenAnolis小助手

操作系统 内核 anck 龙蜥sig 版本规划

直播预告 | 博睿学院:海量数据实时可信认证

博睿数据

智能运维 博睿数据 数据要素 博睿学院

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