2010年3月20日

Alixx Skevington贴出了一篇《完成宣言》,开启了一段关于下列话题的讨论——团队成员对工作的质量和清晰描述代码所交付的商业价值所负有的义务。

 

他列出了如下的完成标准:

 

  • 我肯定我的代码是可用的。我的代码供他人使用和交流。我的代码应使这一过程充满乐趣,减少而不是增加工作量。

 

  • 团队接受我编写的代码风格。除了我,其他人也能维护和改进我的代码。当我拥有用任何技术设计问题解决方案的自由时,我仍然遵守这一规则,编写出其他人可以维护的代码。

 

  • 我赞成保持方法的合理长度。长方法难以阅读和调试。我会尽可能地缩短方法的长度,以降低复杂性。我会注释所有的代码。无论是编写新代码还是修改既有代码,我都会用简明的注释来解释我做了什么。这样其他人在阅读时就能理解我做了什么,代码要解决什么问题。

 

  • 我赞成对自己的代码进行单元测试。我赞成编写可重用的、不易出错的测试用例。我应使测试用例解释它在测试什么和为什么这样测。这样其他人在重构和修改bug时,不但可以运行我的测试用例,还能理解代码在做什么。

 

  • 我同意为既有代码维护测试用例。当我在既有代码上修改或添加功能时,我会确保原有的和新增的测试用例都通过。

 

  • 我同意使自己代码的覆盖率达到至少80%。通过代码覆盖率检查,我能够确认我所写的所有代码都是有价值的。我的代码中不存在可能造成问题的隐患。我会努力使代码覆盖率更高。

 

  • 我赞成检查代码是否被正确地集成。当我写完代码后,我会与其他开发者一起确认我的代码能够与他们的代码一起工作,实现预期功能。

 

文章在LinkedIn上一经贴出,引来了很多网友回复,建议加入更多的条目,例如:

 

我要添加一条:“在签入代码前我会重新运行全部的单元测试”。理由是代码修改后可能会给其他地方带来问题。这种情况在我上一份工作中发生过好几次。(David Kramer)

 

回复:这与单元测试有关:其实我想把这句话改为“我会在编写代码前编写单元测试”,因为我是个测试驱动开发的忠实信徒。另外一条与测试有关的是:它们也是生产代码,请用同等标准对待。(Scott Ames)

 

Scott Mcphee不同意关于代码注释的条目:

我不得不说我完全不同意关于代码注释的说法。注释经常撒谎,或者重复那些显而易见的东西(比如这样:/* 让y等于x */ x=y;),总是让我们背上额外的包袱,去维护代码以外的东西。清晰的设计和编码不需要“简明的注释来解释我做了什么”——这都是代码本身所能说明的,而签入配置管理服务器时的注释和版本比较也足够说明“为什么要这样做”。如果代码不能体现这一点,那么就对其进行重构,直至达到上述要求为止。 API文档是另外一个麻烦,不过通常不是针对源代码的读者来编写的,而是为使用公开方法的用户所提供的,正式发布的产品的一部分。

 

Jay Packlick提出了他认为最为关键的一点:

“完成”的定义所暗示的最重要的一条应当被明确指出,我把它放在列表的第一项:“定义了‘完成功能’的所有的确认条件都应该以测试的形式体现,并能够通过测试”。

posted @ 2010-03-20 14:44 omnislash 阅读(391) 评论(0) 推荐(0) 编辑
  2010年1月14日
摘要: 守-破-离守:是提供一种具体的方法(规范/流程),可供初学者遵循以获得成功。破:是在“守”的基础上,去了解更多可选的方法,并了解每种方法的异同、适用范围。离:对于各种方法融会贯通,不拘泥于具体的形式而运用自如。XP的三级成熟度模型:1、遵循XP方法的各种规则2、在做到1之后,尝试对规则进行变通3、最终无需在意是否在使用XP方法应用:要根据对方(特定于主题)所处的层次来安排谈... 阅读全文
posted @ 2010-01-14 18:16 omnislash 阅读(475) 评论(0) 推荐(0) 编辑
  2008年3月26日
摘要: http://news.csdn.net/n/20080123/113019.html如同所有成功者都会说的话,坚持到底才是最重要。但是简立峰解释能够成功的「坚持」,不是那种固执己见、消耗体力、毅力的坚持方式,也不是一味认定媳妇终会熬成婆的苦苦坚持,而是「期待自己好还要更好,不断突破的坚持态度。」 阅读全文
posted @ 2008-03-26 14:07 omnislash 阅读(169) 评论(0) 推荐(0) 编辑
  2008年3月25日
摘要: 项目管理艺术(The Art of Project Management)P122I've argued with other managers on this very point. They couldn't imagine not allowing their team to code at full speed all the time, regardless of whether the... 阅读全文
posted @ 2008-03-25 13:54 omnislash 阅读(250) 评论(0) 推荐(0) 编辑
  2007年11月19日
摘要: NUnit小技巧一则 阅读全文
posted @ 2007-11-19 21:46 omnislash 阅读(370) 评论(0) 推荐(0) 编辑
  2007年8月21日
摘要: 以前总是先构造领域对象,今天发现,还是从界面构造起开始比较好,符合top-down模式,比较不会迷失方向。 阅读全文
posted @ 2007-08-21 18:07 omnislash 阅读(166) 评论(0) 推荐(0) 编辑
  2007年7月30日
摘要: 周五的时候在写一个小程序,它的输入是电话号码,输出是该号码的区号。区号表用Access数据库存储。解析算法的最初思路是:把整张区号表做成一个状态机,电话号码逐字符输入。这样效率应该比较高,但是要手工构造那个状态机就有点麻烦。“先让程序跑起来,然后让它快起来”——稍微简化一下,先用号码的头三位(为什么用前三位?那是因为国内区号最短就是三位)做模糊查询,过滤掉明显不匹配的区号,... 阅读全文
posted @ 2007-07-30 00:07 omnislash 阅读(593) 评论(0) 推荐(0) 编辑
  2007年5月30日
摘要: 响应一下Anders Liu的号召,列几个自己经常遇到的实现 写得很简单,欢迎讨论 阅读全文
posted @ 2007-05-30 19:08 omnislash 阅读(1076) 评论(5) 推荐(0) 编辑
  2007年5月11日
摘要: 1. 同时使用C++操作符new和MC++操作符new使用__gc和__nogc关键字:例如,托管类M和本地类NM* m = __gc new M;N* n = __nogc new N;2. 含有析构函数定义的托管派生类链接时错误:error LNK2001: unresolved external symbol "void __cdecl __CxxCallUnwindDtor(void (_... 阅读全文
posted @ 2007-05-11 15:34 omnislash 阅读(940) 评论(0) 推荐(0) 编辑
  2007年4月6日
摘要: 问:何时为接口指定实现?答:在一个特定语境的入口处,在该语境范围内,接口的实现作为一种“共识”被使用。它相当于语用学中的Deixis(指示语,例如:“这个”,“那个”,“现在”等等);从这个角度考虑,指定接口的实现是一种建立“共识”的行为。类似情况的还包括参数的传递和读取配置 阅读全文
posted @ 2007-04-06 10:34 omnislash 阅读(413) 评论(0) 推荐(0) 编辑
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示