English

鲍勃大叔的组合拳

2003-09-24 来源:中华读书报 孟岩 我有话说

RobertC.Martin

Robert C.Martin开始发力了。这件事情令我颇为欣喜,也颇为疑惑。号称鲍勃大叔的Martin,在面向对象开发领域素以经验丰富,一言九鼎著称。设计模式四大天王之一的John Vlissides曾不无敬畏地说:“Robert Martin开口说话的时候,最好闭上你的嘴巴乖乖听着。”在2002年之前的漫长岁月里,这位大叔只撰写过一部专著,即1995年的《用Booch方法设计面向对象C++应用程序》。然而从去年10月到今年5月短短半年之间,他连续推出两本重量级著作。前一本《敏捷软件开发》(影印版已由中国电力出版社出版,中文版由清华大学出版社出版)已经在年初摘取了2003年的Jolt图书震撼大奖。而后一本《UML for Java Programmers》(中译本清华大学出版社即出),在我看来,更像是配合《敏捷软件开发》打出的一记重量级的后手直拳。再看看www.artima.com上鲍勃大叔一连串辛辣的weblogs,我仿佛看见了年近花甲的大胖子鲍勃在拳台上轻快地跳动,这情形可真够滑稽。

我说鲍勃大叔,什么东西刺激你了?你的组合拳是冲着谁去的?

软件工业发展到今天,从规模上说已经失控。比如说软件框架(framework),那可是个大家伙,在C时代根本就没敢有这么个概念,当然事实上存在,比如UNIX驱动模型,不过那得是大师才设计得出来的东西。C++时代,“框架”这个词汇开始流行,不过敢于染指的也是高手级人物,或者实力雄厚的大公司,就算这样,一不留神还是设计得一塌糊涂。转眼到了21世纪,Java和.NET称王称霸了,Python和Ruby英姿勃发了,“框架”也下嫁寻常百姓家了。满眼望去,互联网上到处都是framework,好的坏的,漂亮的丑陋的,有人用没人用的,反正是个developer就敢在家里攒一个framework。再说CASE,这东西本来要价高昂,那意思您没有那个金刚钻,就别来揽这个瓷器活。可是拜盗版所赐,现在连那些代码都没写过几行的初学者也可以堂而皇之地开始“全程建模”了。软件产业进步的一个后果,就是让垃圾代码的生产越来越容易,越来越高效,越来越垃圾了。

光是垃圾代码也就罢了,毕竟代码是人写机器读,虽然将来Matrix一统天下,难免会效仿努尔哈赤,指天跺地七大恨,把这作为人类的一条罪状来清算,不过眼下对我们的伤害还不大。但是如今的重型软件工程发展可就有点离谱了,简直自己跟自己过不去。除了制造出一大堆垃圾代码之外,还制造出一大堆垃圾文档。除了制造出一大堆垃圾代码和垃圾文档之外,还制造出一大堆垃圾UML图。这些动辄几千几万页厚的东西,堆在项目组的空桌子上,除了什么什么几级认证的专家们装模作样看几眼之外,再无任何意义。人力资源的浪费咱们就不说了,光是这些白花花的纸就让人看着心疼——都是上等的木材啊,还不如做几双方便筷子卖到东洋出口创汇呢。再说了,老板们整天提醒我们:“你的工位一天就是多少钱啊!”,怎么竟容留垃圾霸占我们宝贵的工位,浪费老板兜里宝贵的资金呢?

如果我没猜错的话,大概就是“垃圾代码、垃圾文档、垃圾UML图”把鲍勃大叔他老人家气着了。我这么说是有证据的,大家看看他在《UML for Java Programmers》这本书里的“反动言论”:

“我们没有对UML图进行测试的客观法则,我们可以观察它,评价它,在它上面运用我们的原则和模式,可是归根到底,这些评价仍然十分主观。”

“没有什么比一张充满了乱七八糟的箭头和方框的迷宫般的UML图更糟糕的了。别做这种蠢事!”

“养成一个好习惯:把UML图扔得远远的。最好是根本不在任何永久介质上绘制UML图。应该在白板或者废纸上画图,白板要常擦,废纸要常扔。记住一条规则:不要使用CASE工具绘图。那些工具自然有其生存时空,不过你的大部分UML图都应该是短命鬼。”

“我们怎么创建UML图的?是在灵光一闪中受到天启而绘制出来的吗?是先类图、后顺序图这样按部就班地画出来的吗?我们是不是应该在进入任何细节之前先把系统的整体架构建造起来?对这些问题,我们应当大声地回答:‘否!’,让余音绕梁三日。当人们脚踏实地,走一步,看一步,积跬步以至千里的时候,往往能把事情做好。而当人们好高骛远,凭空一跃的时候,往往会把事情做糟。我们要把事情做好,要创建有用的UML图,所以,我们应当脚踏实地,步步为营。”

“好的文档对任何项目来说都是至关重要的。没有它们,项目组将会迷失在代码的汪洋大海中。可是另一方面,一大堆无用的文档会把事情搞得更糟,因为你除了要面对所有这些烦人的、误导性的文档之外,还是会同样面对代码的汪洋大海。”

给此书作序Peter Mc Breen(《软件工艺》作者,该书中文版将由人民邮电出版社出版)也毫不含糊,他说:

“在见过一大堆CASE工具之后,我非常认同Robert对于CASE工具的警告。我个人宁可看到人们把钱用来给气派的会议室里添加一个有影印功能的白板,也不愿意看到他们把钱浪费在CASE工具上。不错,CASE工具从某种角度上讲确实够酷,不过就提高开发效率而言,很多别的地方更值得花钱。”

够了!光是这些话就足够让某些人士跳起来掐鲍勃大叔的脖子了。所以我不难想象,鲍勃大叔要挥舞他的大拳头,准备肉搏战。在《敏捷软件开发》中,他还仅仅只是谦谦君子般地发表了自己的主张,用左探拳轻轻晃了一下对手的眼睛。对手还没搞清楚呢,恐怕还有不少人跳起来欢呼雀跃给鲍勃大叔唱赞美诗,没想到他不买账,紧跟着在这本轻薄短小的新书里用右手来了一记重拳,我看这下子得有不少人目瞪口呆,鼻血长流了。不信你看看Amazon上对这本书的书评,哈,可真有人被气着了。

从某种意义上说,鲍勃大叔是在捍卫他那一代程序员的信念,捍卫他们对于软件的纯洁信仰。要知道,Martin本人是Rational ROSE第一代开发团队的核心人物,对UML的诞生起了重要的作用。现在他自己站出来与典型性UML高烧以及重型软件工程方法作战,这是多么不容易!作为传统软件工程界的重量级人物,他加入了敏捷阵营;作为UML的重量级人物,他提倡审慎地使用UML;作为CASE工具开发界的重量级人物,他跳出来反对CASE;作为C++的重量级人物,前C++ Report主编,他如今高唱Ruby和Python的颂歌。然而从这些反复无常中,我们看到的始终是鲍勃大叔诚实的、无私的、追逐真理的心,敢于扬弃自我的精神,这对于一个oldguy来说,是多么的可贵和可敬!

著名的畅销书《跨越鸿沟》的作者Geoffrey Moore说,一本好书能够说出读者心里的话,当人们看见自己心里的委屈情绪被明明白白印在纸上时,会有一种赎罪般的快感。“赎罪般的快感”,多么绝妙的概括!当我读这本书的时候,当我在台下看见鲍勃大叔的右手重拳结结实实地敲在对手鼻子上的时候,心里的感觉就像吕丽萍在广告中说的那样:“舒坦!”

手机光明网

光明网版权所有

光明日报社概况 | 关于光明网 | 报网动态 | 联系我们 | 法律声明 | 光明网邮箱 | 网站地图

光明网版权所有