世界级编程大师Robert C. Martin:代码质量与其整洁度成正比

Robert C. Martin,世界级编程大师,设计模式和敏捷开发先驱,敏捷联盟首任主席,C++ Report前主编。20世纪70年代初成为职业程序员,后创办Object Mentor公司并任总裁。后辈程序员亲切地称之为“

Bob大叔”。



Martin还是一名多产的作家,至今已发表数百篇文章、论文和博客文章。著有《代码整洁之道》《代码整洁之道:程序员的职业素养》《敏捷软件开发:原则、模式和实践》《UML:Java程序员指南》等。

Robert C. Martin

天才少年Bob的成长之路

天才是百分之一的灵感,加百分之九十九的汗水,但那百分之一的灵感往往比百分之九十九的汗水来的重要。——爱迪生

Bob 1.0——12岁

1964年,12岁的Bob写下人生第一行代码。

Bob 2.0——13岁

1965年,Bob与小搭档John Marchese开始合作

造电脑。Bob思考,John动手,两个人忙活了数百个小时,捣鼓出不少看起来相当有型的东西,上面装着继电器、按钮、小灯,甚至还安装了一个电传打字机!虽然这些电脑并不能用,但是对于两个13岁的小朋友来说,这已经相当了不起了!

电动打字机

Bob 3.0——16岁

1968年,Bob 在中学结识了新的小伙伴 Tim Conrad,开始了

新一轮的造电脑工程

这次由 Tim 思考,Bob 动手,Tim 还教给了 Bob 一些电子学知识,他也是第一个给 Bob 介绍 PDP-8 的人。他们用了一些很基础的元器件,真的造出了一台可以工作的18位二进制计算器,能够进行加减乘除的运算。他们兴奋极了——那一年他们把所有的假期都搭进去了。

后来,他们自学了计算机课程。在那个年代,这可是一件相当不容易的事情。他们特别找来了有关PDP-8汇编器、FORTRAN、COBOL、PL/1的书籍,然后就像海绵一样在书中汲取知识,孜孜不倦地写了一堆程序,遗憾的是,这些程序并不能去实际执行,因为那时没有计算机可以提供实操。

PDP-8汇编器

Bob 4.0——17岁

1969年,Bob、Tim 以及他们的伙伴 Richard Lloyd 成为了 ASC 公司的程序员,为芝加哥卡车司机工会开发实时会计系统。

17岁的他们觉得上大学是浪费时间,于是进入职场,在那里他们遇到了Bill Hohri、Frank Ryder、Big Carlin 和 John Miller,他们为这些年轻人提供了学习专业编程的实战机会,Bob在其中颇受教益。

不过,这份工作经历也让Bob意识到,作为一个程序员还应该具备某些素养,例如对着你的上司说“YES”和“NO”。

Bob在ASC工作时,他的上司 Frank 是一位退役的空军上校,这位领导的处事风格雷厉风行:我发出指令,你们按时上线。初入职场的一众小年轻,包括Bob,甚至不敢看他的眼睛,更不敢抗议时间不够,以致于最终的结果是系统按时上线,故障频发,无限次数的系统崩溃、系统重启。

Bob认为,程序员往往太容易说“YES”,总是在没有明确目标和期限的情况下,就第一时间草率地给出了确认的答复,任务交付时却无法实现自己的承诺。

有时候,获取正确决策的唯一途径,便是勇敢无畏地说出“不”字……我们要明白,委屈专业原则以求全, 并不是问题的解决之道。舍弃这些原则,只会制造出更多的麻烦。
只要你愿意尝试,在工作中对着那些不合理的工作任务,主动说几次“NO”,之后你会逐渐发现:你只需要花三分的力气去拒绝那些无法完成的工作任务,就可以节省出十分甚至二十分开发的时间;相反,如果在没有明确目标和期限的情况下,就草率地给出了确认的答复,往往会非常被动,到最后,项目就会落得像著名的 IBM OS/360 操作系统一样的失败下场。

Bob在其经典书籍《代码整洁之道》中也提到,作为一个程序员不仅要懂得“NO”背后所蕴含的意义和责任,“YES”背后的意义和责任同样重要。

说“YES”时,你是对自己将会做某件事做了清晰的事实陈述,而且还明确说明了完成期限。你陈述的是自己会去执行的一项行动,而且,你确定“会”做到。
但“YES”背后常常跟着的是屡见不鲜的项目延期,绝大部分原因就是在这种不负责任的情况下说 “YES”导致的。

在Bob的学生时代和职业生涯中,直接导师并不多,Bob是依靠在工作项目中的摸索以及读一些杰出人物的著作来汲取知识、积累经验的。这些人包括:

Grady Booch(《UML用户指南》作者)Tom DeMarco(《项目百态》作者)Meilir Page-Jones(《UML 面向对象设计基础》作者)Erich Gamma(《设计模式》作者)Martin Fowler(《重构》作者)Bertrand Meyer(《面向对象软件构造》作者)Kent Beck(《测试驱动开发》作者),等等

Bob感觉这些教导都是充满价值的。

随后Bob在Teradyne工作,他从老板、工作伙伴们的身上学到了许多他认为有价值的东西,特别是Mike Carew,他们成为了黄金搭档,“如果你想活儿干得又快又好,就把他交给Bob和Mike!“

糟糕的代码能让一个公司关门大吉!

在一个项目中,某位同事花三个星期写完一串代码后离职了,在没有批注、没有规律的情况下,果然没有人能够理解这串代码,最终只能由新的同事重新撰写。这段经历引起Bob对代码整洁的重视。

Bob 5.0——35岁

1987年,Bob开始和 Jim Newkirk 搭档,随后他们相继离开 Teradyne,加入了 Clear Communication。

与此同时,Bob见识了一个公司的兴起和衰落。

有一家公司写了一个非常流行的杀手应用,许多专业人士都买来用,包括Bob。然而慢慢地,应用的发布周期开始拉长,缺陷总是不能修复,装载时间越来越久,崩溃的频率也越来越大。至今Bob还记得自己在某天沮丧地关掉那个程序,从此再不用它时的绝望心情。果不其然,在那之后不久,该公司就关门大吉了。

后来,Bob见到那家公司的一位早期雇员,问他发生了什么事,他的回答令Bob愈发恐惧。

原来,当时他们着急推出产品,代码写得乱七八糟,特性越加越多,代码也越来越烂,最后再也没法管理这些代码了,只好放着不管,最终,糟糕的代码毁了这家公司。

这个事情更是让Bob确定了代码的整洁是需要引起重视的,但是当时的他并没有能力来改变这一切。

Robert C. Martin

99%的程序员都在为糟糕代码头痛!

Bob 6.0——《代码整洁之道》

Bob 和 Jim 一起在 Clear Communication 拼搏了好几年后,共同创办了

Object Mentor公司。

想到那个困扰了他许久的难题,也是大部分程序员都遭遇过的难题——糟糕的代码,他本能的想解决这个问题,给别人带来帮助。于是,他开始写作。

他在《代码整洁之道》一书中分享了自己多年编程生涯积累的项目实践经验,将代码整洁的多种解决办法倾囊相授,受到了广大程序员的喜爱及追捧。

Bob在《敏捷软件开发》的序中写道:

最好的软件开发人员都知道一个秘密:美的东西比丑的东西创建起来更廉价,也更快捷。
而构建、维护一个美的软件系统所花费的时间、金钱都要少于丑的系统。
美的系统是灵活、易于理解的,构建、维护它们就是一种快乐。

如果说在《敏捷软件开发》中,更多的是对设计思想和模式精髓的阐述,那么在

《代码整洁之道》中,Bob 为程序员们提供了更为详尽的微距视角,涉及“命名”、“函数”、“代码格式”、 “异常处理”、“单元测试”等编码主题,巨细无遗地向软件工匠们传授整洁编码的艺术,进一步向软件开发社区慷慨分享他在探索“软件之美”旅途中的心得体会。

Bob在书中提出一种观点:

代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护和升级奠定了良好基础。

他认为,无论是敏捷开发流派还是传统开发流派,想要保证软件质量,不仅仅依赖架构及项目管理,更与代码质量紧密相关。

世界级软件开发大师的多重身份

Bob 7.0——成就

如今,Bob除了写作,还会为 http://cleancoders.com 制作视频,也会在技术会议上讲话,从世界级软件开发大师到畅销专业书籍作家再到台前传达专业领域知识的权威人物,Bob给我们带来一次次惊喜。

在这个过程中,他发现自己不止在编程方面颇有心得,对于站在人前传达信息这件事也颇有天赋。

Robert C. Martin

从一位职业的程序员变身成为这个领域的导师,这是一个缓慢的成长过程,并非一蹴而就。

Bob说:“我花了整整20年来积累工作经验,又花了20年才做到今天的成就。‘变身’从来都不是我意料之中的事,也不是我的目的;但这个过程对我来说是一种享受”。

文章来源:异步社区、图灵社区,有删改

相关阅读:

《代码整洁之道》

[美] Robert C. Martin 著 韩磊 译

作为编程领域的佼佼者,Bob大叔给出了一系列行之有效的整洁代码操作实践。

这些实践在本书中体现为一条条规则(或称“启示”),并辅以来自现实项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。

《代码整洁之道 程序员的职业素养》

[美] Robert C. Martin 著 余晟 章显洲 译

本书是编程大师“Bob 大叔”40 余年编程生涯的心得体会的总结,《代码整洁之道》姊妹篇,讲解要成为真正专业的程序员需要具备什么样的态度,需要遵循什么样的原则,需要采取什么样的行动。

作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来者引路,助其职业生涯迈上更高台阶。

《重构:改善既有代码的设计(第2版)》

[美] Martin Fowler 著 熊节 林从羽 译

本书清晰揭示了重构的过程,解释了重构的原理和最佳实践方式,并给出了何时以及何地应该开始挖掘代码以求改善。

书中给出了60多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。本书提出的重构准则将帮助你一次一小步地修改你的代码,从而减少了开发过程中的风险。