规范何用论

英文原文 http://diveintomark.org/archives/2004/08/16/specs

大多数开发者是本蛋(morons),剩下的全是昆蛋(assholes)。我(Mark Pilgrim)不时的发现自己本人流于两个集团之一,所以不惭认定以下事实。


昆蛋

昆蛋精心阅读各种规范,寻找纰漏,疏忽,甚至仅仅是错别字。他们会写出严格符合规范,但是根本没用的代码。如果有人碰巧指出他写了没用的软件,他就可以自鸣得意了,然后在博客上作无辜状哭诉,指出规范中清楚证明他的极端破败软件如何如何技术性正确的条文。

有些昆蛋会写测试用例。碰到这样的人,在规范编写过程中是有好处的,因为有时搞好了可以把这些人无穷无尽的时间和精力利用起来,在规范定稿之前找出更多纰漏。不幸的是,要利用昆蛋,需要的时间和技巧有过之而无不及。这就是为什么写出好规范要如此耗时:大多数的时间浪费在了昆蛋管理上面。


本蛋

另一方面,除非被人吼了,本蛋从不主动读规范。他们做事就是淘荒几个示例程序,基于自己设想出来有限的几种情况写出看起来好用的代码。一旦交付,他们必然要被人吼,因为他们的产品很难找出哪怕一点能够符合别人用的规范。有人给他们指出规范里清楚说明他们软件破败如何严重的条文,他们于是加以修正。

本蛋一般没什么特别,但是其中有两种本蛋值得特别提及。第一种像所有本蛋一样改示例程序,交付,然后被吼,在被迫去读规范之后,他们会神奇般转变为昆蛋,辩驳说规范有歧义,或者某种程度上有误导,或者无从轻重,因为也没别人能实现,或者干脆就是错误的。这些人被称为“反社会者(sociopaths)”。不管规范定得多好,他们也不会去写与之相符的代码,所以对这些人不理也无妨。

第二种本蛋也是改示例程序,交付,然后被吼。但当他们开始习惯读规范之后,会神奇般的转变为拥护者,并且总结他们的失误写成教材。这些人被称为“专家(experts)”。几乎世上有用的教程都是由出身本蛋的专家写出来的。


天使

有人会辩驳说并非所有开发者都一定是本蛋或者昆蛋,但他们想错了。例如,有人认为存在一类我(Mark Pilgrim)称之为“天使”的开发者。“天使”仔细阅读规范后写代码,并且交付他们的产品之前针对成套测试进行全面测试。不会有真正的天使存在,不过对规范撰写者来说,有这个念像能让他们自我感觉好一些。


规范何用

如果你的规范不够好,本蛋就永远没有机会做出正确的东西。每有一个人抱怨他们的软件太破,就有两个昆蛋站出来说没有这回事。以仲裁本蛋与昆蛋之纷争为主要目的的规范,解决不了任何事情,争论还是会历年郁积。

如果你的规范够好,本蛋还有一线战机突破昆蛋的重围,知错能改而取得最终胜利。与此同时,除了挑规范毛病而无所事事的昆蛋们也就无的放矢,最后无趣而终,收手转去寻找其他人侵扰了。

你可能感兴趣的:(软件测试,idea)