别怕Linux编程 名书名人

《高效程序员的45个习惯》-之六

原创文章属于《Linux大棚》博 客,博客地址为http://roclinux.cn

文章作者为 rocrocket。

为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅。

===

[正文开始]

请您在阅读本文之前,先了解

《高效程序员的45个习惯》-之一

《高效程序员的45个习惯》-之二

《高效程序员的45个习惯》-之三

《高效程序员的45个习惯》-之四

《高效程序员的45个习惯》-之五

21 不同环境,就有不同问题

“只要代码能在你的机器上运行就可以了,谁会去关心它是否可以在其他平台上工作,你又不用其他平台。”

一位同事的代码失败了,最终找到了罪魁祸首:一个.NET环境下的API在Windows XP和Windows2003上的行为不同。平台不同,造成了结果的不一样。

使用持久集成工具,在每一种支持的平台和环境中运行单元测试,要积极地寻找问题,而不是等问题来找你。

22 自动验收测试

“很好,你现在用单元测试来验证代码是否完成了你期望的行为。发给客户吧。我们很快会知道这是否是用户期望的功能。”

关键业务逻辑必须要独立进行严格的测试,并且最后需要通过用户的审批。但是,你又不可能拉着用户,逐一模块确认。所以你需要能自动比较用户期望和实际完成的工作。

FIT(fit.c2.com),即集成测试框架,它很实用,可以更容易的使用HTML表格定义测试用例,并比较测试结果数据。

23 度量真正的进度

“用自己的时间表报告工作进度。我们会用它做项目计划。不用管那些实际的工作时间,每周填满40小时就可以了。”

时间表很难真实地反映工作完成状况,因此它不可以用来进行计划、评估或表现评估。

你曾经听到开发人员报告一个任务完成了80%么?然而过了一天又一天,一周又一周,那个任务仍然是完成80%。

随意用一个比率进行度量是没有意义的。所以不应该去计算工作量完成的百分比,而应该测定还剩下多少工作量没有完成。如果你最初估计这个任务需要40个小时,在开发了35个小时之后,你认为还需要另外30个小时的工作。那就得到了很重要的度量结果(这里诚实非常重要,隐瞒真相毫无意义)

关注功能,而不是日程表。

24 倾听用户的声音

“用户就是会抱怨。这不是你的过错,是用户太愚蠢了,连使用手册都看不懂。它不是一个bug,只是用户不明白如何使用而已。他们本应该知道更多。”

不管它是否是产品的bug,还是文档的bug,或者是对用户社区理解的bug,它都是团队的问题,而不是用户的问题。

对于一些软件,倒霉的用户必须要配置那些包含了一些魔术数字的模糊系统文件,否则系统根本不会运行。系统既没有错误提示消息,也不会崩溃,只是显示大黑屏和一个斗大的“退出”按钮。

每一个抱怨的背后都隐藏着一个事实。找出真相,修复真正的问题。

没有愚蠢的用户;只有愚蠢自大的开发人员。

“它就是这样的。”这不是一个好答案。

你的用户有可能会阅读所有的文档,记住其中的所有内容。但也可能不会。

25 代码要清晰地表达意图

“可以工作而且易于理解的代码当然好,但是让人觉得聪明更加重要。别人给你钱是因为你脑子好使,让我们看看你到底有多聪明。”

Hoare说“设计软件有两种方式。一种是设计得尽量简单,并且明显没有缺陷。另一种方式是设计得尽量复杂,并且没有明显的缺陷。”

(Hoare创造了Algol 60编程语言,并发明了快速排序算法。于1980年获得图灵奖。)

代码阅读的次数要远远超过编写的次数,所以在编写的时候值得花点功夫让它读起来更加简单。

当开发人员们像一群旁观者见到UFO一样围在代码四周,感到恐惧、困惑与无助时,这个代码的质量就可想而知了。

看一个例子:

coffeeShop.PlaceOrder(2);//通过阅读代码,可以大致明白这是要在咖啡店中下一个订单。但是2代表什么意思?
coffeeShop.PlaceOrder(2 /* large cup */); //不妨添加一些注释。但注释有时候是为了帮写得不好的代码补漏。
public enum CoffeeCupSize
{
Small,
Medium,
Large
}
coffeeShop.PlaceOrder(CoffeeCupSize,Large);//如果使用上枚举值,代码就一目了然了。

应该让自己或团队的其他任何人,可以读懂自己一年前写的代码,而且只读一遍就知道它的运行机制。

敬请期待:《高效程序员的45个习惯》-之七

over~

3条评论

  1. 请教下博主,《看日记学Git》是不是用Latex来编写的?pdf中的语言格式高亮,博主有没有什么编辑心得?

    1. 谢谢关注:)
      有关《看日记学git》的pdf版是网友帮忙整理汇总的,大棚博主还没有做过类似pdf文档.

发表您的评论

请您放心,您的信息会被严格保密。必填项已标识 *