[美]RobertC.Martin《代码整洁之道》作品简介与读书感悟

RobertC.Martin,软件行业泰斗级人物,世界级编程大师。他是设计模式和敏捷开发先驱,敏捷联盟首任主席,C++Report前主编,被后辈程序员尊称为“Bob大叔”。Bob大叔是一名多产的作家,

Robert C. Martin,软件行业泰斗级人物,世界级编程大师。他是设计模式和敏捷开发先驱,敏捷联盟首任主席,C++ Report前主编,被后辈程序员尊称为“Bob大叔”。

Bob大叔是一名多产的作家,先后出版了《UML:Java程序员指南》《敏捷软件开发:原则、模式和实践》《代码整洁之道》《代码整洁之道:程序员的职业素养》等。其中,整洁之道系列成为了国内外数百万程序员的案头读物,豆瓣均分高达8.9。今年,Bob大叔的新书《敏捷整洁之道:回归本源》正好构成了“整洁之道”三部曲。

“整洁之道”一直是值得程序员琢磨的技艺, 而Bob大叔用自己40多年的编程经历,在三部曲中总结出了对“整洁”的体会和建议。今天,异步君整理并分享出来,希望能对大家有所启发。

01 代码质量与其整洁度成正比

Bob在《代码整洁之道》提出一个观点——代码质量与其整洁度成正比。他认为在软件开发行业保持高效的秘诀,就是始终尽可能保持代码整洁。

在他的职业生涯中,曾被某人的糟糕的代码绊倒过,本来只需做一行修改,结果却涉及上百个模块,导致项目进度延缓严重。那时Bob开始思考一个问题——为什么会产生糟糕的代码呢?

2.《代码整洁之道》(推荐66%) Clean Code:A Handbook of Agile Software Craftsmanship 作者:[美]Robert C. Martin 内容简介: 干净的代码,既在质量上较为可靠,也为后期维护和升级奠定了良好基础。作为编程领域的佼佼者,本书作者给出。

是想快点儿完成吗?是要赶时间吗?有可能。或许你觉得自己要干好而所需的时间不够;假使花时间清理代码,老板就会大发雷霆。或许你只是不耐烦再搞这套程序,期望早点儿结束。或许你看了看自己承诺要做的其他事,意识到得赶紧弄完手上的东西,好接着做下一件工作。这种事程序员都干过。

我们都曾经瞟一眼自己亲手造成的混乱,决定弃之而不顾,走向新一天。我们都曾经看到自己的烂程序居然能运行,然后断言能运行的烂程序总比什么都没有强。我们都曾经说过有朝一日再回头清理。当然,在那些日子里,我们都没听过勒布朗(LeBlanc)法则:稍后等于永不(Later equals never.)。

Bob见过不少因为糟糕代码而关门大吉的公司,混乱的代码会使生产力下降,并最终让公司不堪重负。有些团队在项目初期进展迅速,但一两年后效率就变得慢如蜗行。当生产力下降时,管理层就只有一件事可做了:增加更多人手到项目中,期望提升生产力。可是新人并不熟悉系统的设计。他们搞不清楚什么样的修改符合设计意图,什么样的修改违背设计意图。而且,他们以及团队中的其他人都背负着提升生产力的可怕压力。于是,他们只会制造更多的混乱,驱动生产力向零那端不断下降。如图所示。

生产力vs时间

有时软件开发者会把问题归咎于那些愚蠢的经理、苛求的用户、没用的营销手段。我们抱怨需求变化背离了初期设计;哀叹进度太紧张,没法干好活。不过,这不能怪别人——是我们太不专业了。

假使你是位医生,病人请求你在给他做手术前别洗手,因为那会花太多时间,你会照办吗?本该是病人说了算;但医生却绝对应该拒绝遵从。为什么?因为医生比病人更了解疾病和感染的风险。医生如果按病人说的办,就是一种不专业的态度。

同理,程序员遵从不了解混乱风险的经理的意愿,是不专业的做法。经理和营销人员指望从我们这里得到必需的信息,然后才能做出承诺和保证;多数经理想要好代码,即便他们总是痴缠于进度;多数经理想要知道实情,即便他们看起来不喜欢实情。经理们奋力卫护进度和需求——那是他们该干的。你需要做的,是以同等的热情卫护代码。

所以,无论你是背负着期限的压力,还是你写的程序被上司的一个突发奇想而打回去修改。对你来说,赶上期限的唯一方法,也是做得快的唯一方法 ——就是始终尽可能保持代码整洁。这也是Bob大叔推崇整洁代码的初衷。

2009年,Bob大叔的《代码整洁之道》一经面世,就在软件开发行业掀起了轩然大波,整洁这一理念得到了数百万程序员的追捧。说软件统治世界并不过分。如果软件统治世界,那么最能让软件开发者们做好软件的方法,非敏捷莫属。

02 程序员的两大核心职业素养

Bob把自己职业生涯里犯过的错都记录在《代码整洁之道:程序员的职业素养》里,他希望大家把这本书当成一份指引,绕开他曾经走过的弯路。

2.代码整洁之道(Robert C. Martin力作,韩磊献译) 这是我最喜欢的一本书,不止一次我将它推荐给我的同事,读者还有学生。我认为它可以称得上软件开发与编码方便最好的一本书。Bob大叔我想无需做介绍,他写 过一个关于敏捷开发的系列书。

[美]RobertC.Martin《代码整洁之道》作品简介与读书感悟

作为一个专业的程序员,除了要有担当责任的勇气,还要懂得何时说“不”。

成为英雄及“解决问题”的诱惑诚然巨大,只是我们要明白,牺牲专业原则以求全,并非问题的解决之道。舍弃这些原则,只会制造出更多的麻烦。

Bob曾犯过这样一个错误——他把没有经过“夜间例行程序”测试的软件推出给了几十个客户,导致了客户数据丢失,公司的客户经理被电话轰炸。为了如期交付产品,他忽略了测试环节,整个过程中只考虑要如何保全自己的颜面,没顾及客户和雇主的声誉。

这件事让Bob明白了两个道理:一是专业的程序员要为自己的失误负责——如果你不小心放过了某个模块里的一个bug,以致公司损失了1万美元,那你将为那1万美元买单;二就是专业人士应该懂得说“不”,要敢于说明真相而不屈从于权势。

能就是能,不能就是不能。不要说‘试试看’。

——尤达

如果你的上司告诉你,“你在明天之前要完成那个登录页面”,你多半会这样回答,“噢,喔!要那么快啊?那好吧,我会尽量试试”。多么愉快而轻松的对话啊,而实际情况是,完成“登录页面”所需时间绝不止一天,你对此心知肚明。为了避免冲突,你撒了谎,或许你不觉得这是什么谎言,或许你觉得自己真的会去努力尝试,而且或许你真对按时完成抱着些微薄的希望。但到最后,这仍只会是个谎言。

而你的上司却不会这么理解,他会把“我会尽量试试”当作“好的,没问题”。然后在Deadline来临的时候,看着你做的失败的登录页面大发雷霆,而且他会承受比你更大的压力。

在Bob看来,程序员和雇主双方都应该具有专业性。你的上司要求你在明天之前完成登录页面,这就是他在追求和捍卫的一个目标,那是尽他的工作职责。如果你明知第二天之前不可能完成登录页面,根据汇编代码填写C代码,嘴上却说“好的,我会试试的”,那么便是你失职了。这时候,尽职的唯一选择是说“不,这不可能”。

在Bob看来,程序员和雇主双方都应该具有专业性。你的上司要求你在明天之前完成登录页面,这就是他在追求和捍卫的一个目标,那是尽他的工作职责。如果你明知第二天之前不可能完成登录页面,嘴上却说“好的,我会试试的”,那么便是你失职了。这时候,尽职的唯一选择是说“不,这不可能”。

著名软件专家RoberfC.Marlin在《代码整洁之道》中为你呈现出了革命性的视野。 Martin携同ObjectMetltor公司的同事,从他们有关整洁代码的最佳敏捷实践中提炼出软件技艺的价值观, 以飨读者,让你成为更优秀的程序员——只要你着手研读《代码。

可是难道你不该照上司说的话去做吗?当然不该,你的上司指望的是,你能像他那样竭尽所能地捍卫自己的目标。可能的最好结果,是你和你的上司共同追求的目标。最关键的是要找到那个共同目标,而这往往有赖于协商。你们之间各表异议相互说“不”,然后找到了双方都能接受的解决方案。对话中必然会稍有冲突,也有片刻不愉快发生,但如果双方坚持追求的目标不能完美切合时,找到一个能应急的方案是比较理想的情况。

或许你觉得应该解释下为什么“登录页面”还要花那么长时间才能完成。Bob的经验是,“为什么”远不如“事实”重要。如果你的上司恰好有技术背景和好脾气去倾听理解,这些解释也许会有用。大多数情况则是,他可能会不认同你的结论。有时候,提供太多细节,只会招致更多的微观管理。

当我们承诺某事时,必须认真对待承诺。同样,当我们意识到某事不可能达到预期,也应当及时说“不行”。因为你的英雄主义,或者害怕“对抗”上司,导致的损失需要你有勇气承担。这是Bob大叔想告诉我们的——作为一个程序员该有的基本素养。

03 敏捷归来,正本清源

在距离敏捷宣言发布20个年头后,大家似乎遗忘了软件产品开发管理者应有的状态。而今,Bob大叔在《敏捷整洁之道:回归本源》中提出了“软件匠艺宣言”,给敏捷宣言加上了第五句——“匠心高于瞎写垃圾”( Craftsmanship over Crap),而他的目的正是要为敏捷正本清源、清理门户。

自2001 年 2 月《敏捷宣言》诞生以来,Bob看到敏捷迅速席卷了整个软件行业,这是令他意想不到的事情。他低估了长久以来人们被“分析-设计-编程”这种瀑布式项目模式束缚已久的爆发力。以前,我们首先分析问题,然后设计解决方案,接着按照设计实现。简单、直接、明显,但却是错的。

《敏捷宣言》的中心思想:

个体和互动高于流程和工具;

可工作的软件高于详尽的文档;

响应变化高于遵循计划。

敏捷改变了软件行业的思维模式,但是就如耳旁传话游戏那样,最初的敏捷思想被扭曲和简化,最终到公司里变成了承诺可以更快交付软件的一个流程。一些公司在敏捷转型上投入了几年时间与资源之后,才意识到:他们以前存在的问题如今仍然存在。当然,他们把责任全都推到敏捷头上。

好像是Java或者c# ,那本书代码不多,内容大多是啰嗦,不过很有启发,即使不是你学的语言你也能看懂,这就是那本书编码给人的感觉,无关语言类型,只关心代码描述。

大多数管理人员不理解软件项目的基本原理,质量、速度、成本、完成,这4个“铁十字”,你只能任选 3 个,没法 4 个全要,不是要求每一个属性都做到是 100%。

敏捷只是一个框架,它可以帮助开发人员和管理人员进行务实的项目管理。但是,这种管理不是自动的,并不能保证经理会做出恰当的决定。

随着对技术能力逐渐失去关注,敏捷是否还能给软件项目带来显著的改善?敏捷是否还像当初《敏捷宣言》中所言,聚焦于身体力行同时帮助他人探寻更好的软件开发方法?Bob大叔说,“我不是很确定。”

请不要把这本书当视为学术著作,最好将它视作一本回忆录——就像脾气暴躁的老年人满腹牢骚,让时尚新潮的敏捷小年轻们从他家的草坪上滚开。

——Bob大叔

有人认为,编程行业的新老更替开启了某种程度的黑暗时代。Bob却深明其中的原因——整整30年,大家一直受困于“用大团队干大事”的观念,根本不知道成功的秘诀其实在于用很多小团队解决很多小问题。而用小团队解决小问题,就需要每个程序员具备“匠艺精神”。

匠艺提倡将软件开发作为一种职业。职业不同于工作。工作是我们要做的事情,但并不是我们自己的一部分。而职业则是我们的一部分,我们会对职业进行投资。我们希望在职业上不断精进。我们希望获得更多技能,并且拥有长久而充实的职业生涯。

敏捷要修复开发与业务之间的鸿沟。不幸的是,当项目经理涌入敏捷社区时,最初创建敏捷社区的开发人员感觉被剥夺了价值。

因此,他们离开敏捷去组织匠艺运动,而长久以来的不信任仍在延续。

——肯特·贝克 于2001年的雪鸟会议

当越来越多的年轻程序员进入行业,大家对敏捷开发的理解可能与Bob当初的意图相去基远。现在,Bob大叔用《敏捷整洁之道:回归本源》给读者提供了一个历史的视角,使读者更完整、更准确地看清敏捷开发。就仿佛在对每一个年轻的程序员耳提面命——看看敏捷开发最初的样子吧!

敏捷整洁之道:回归本源

译者:申健 何强 罗涛

本书首先概述敏捷的历史、敏捷的全貌;然后分析软件开发各角色之间的关系,说明敏捷出现的缘由;接下来分别讲解敏捷的业务实践、团队实践和技术实践;同时还介绍了成就敏捷的因素,其中还谈到敏捷转型中常见的问题与困难;最后提出软件匠艺理念。

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

译者:余晟 章显洲

[美]RobertC.Martin《代码整洁之道》作品简介与读书感悟

代码整洁之道

作者简介:Robert C. Martin,Object Mentor公司总裁,面向对象设计、模式、UML、敏捷方法学和极限编程领域的资深顾问。他是Designing Object-Oriented C++ Applications Using the Booch Method及Jolt获奖图书Agile Software 。

[美]RobertC.Martin《代码整洁之道》作品简介与读书感悟

译者:韩磊

-END-

上一篇 2023年01月14 23:46
下一篇 2023年05月14 15:01

相关推荐

  • 造字圣人是谁,中华人民共和国书法圣人唐大栋

    仓颉的介绍仓颉,原姓侯冈,名颉,俗称仓颉先师,又史皇氏,又曰苍王、仓圣。仓颉是“文祖”,是“造字圣人”。他和“字圣”许慎不一样的好吗。许慎研究了从古至今(到他那时候)汉字字形、字义等等的演变,并将一一

    2023年05月02 298
  • 怎样画老鼠,4十3二7画老鼠

    画好看简单的小老鼠首先要画出小老鼠的侧脸的轮廓,这里它的额头应该是凸起的,鼻梁处应该是下凹的,接着在此基础上画上小老鼠的耳朵、帽子、五官、披风以及它的身体,最后给小老鼠画束花并上色即可。简单漂亮老鼠简

    2022年12月26 208
  • 北京怎么画,北京天门画一等奖

    明清时北京最著名的年画纸马作坊当属崇文门外的门神王和东四牌楼的汪纸马这二家其中汪纸马胡同皆因汪家在此制作纸马而得名北京木版年画具有官雅文化与市井文化并存的艺术风格1、首先画出北京天安门的顶部,往下画出

    2023年05月30 269
  • 湖怎么画,怎样画湖简笔画

    每天用2分钟陪您和孩子一起画湖中小岛在湖中心画一座房子吧1、先画一条长长的曲线,作为湖岸。2、再画一条和步骤1平行的曲线,这可以让海岸有立体感。在纸张的左下角和右下角画几个重叠的倒置的“V"形,作为水

    2023年05月11 282
  • 怎么ps合成照片,怎样p照片合成照片

    怎样p照片合成照片,PS中有一个功能叫“匹配颜色”。可以使两张或多张图片的颜色倾向一个色调,使得图片可以色调统一。也可以在图片混合时,更容易使得颜色统一。一:两张或多张图片颜色统一二:图片混合的技巧具

    2023年01月20 285
  • 海伦钢琴怎么样,海伦钢琴好还是珠江好

    世界钢琴起源于欧洲,目前,世界钢琴制造基地在中国,而中国钢琴行业以总体钢琴厂区规模著称的“海伦钢琴”,以奇迹般的发展速度,用19年的时间,将一个崭新的民族品牌,无数次铿锵有力地奏响于世界各个角落。在维

    2023年01月13 244
  • 拇指琴多少钱,世界上十大公认最简单乐器

    苏州河书房美育课主题:“美妙音乐会”创意拇指琴手作体验活动时间:4月8日(周六)上午9:30地点:2楼苏州河书房活动空间参与方式:预约报名拇指琴,或称“卡林巴琴”是一种非洲具有民族特色的民族乐器它主要

    2023年04月09 248
  • 学吉他要多少钱,学吉他一年需要多少钱

    “本来打算让儿子学习吉他,陶冶一下情操,谁会想到居然遭遇了这么糟心的事!”近日,家住黄浦区的凌先生(化名)在新天地治安派出所报案时心有余悸地向民警感叹。现在,孩子学习乐器的情况越来越普遍,凌先生和周围

    2023年02月28 246
  • 微博全景图片怎样拍摄,全景图片怎么拍摄

    掐指一算,大家已经宅家一月有余了。继钻研厨艺之后,很多人又把注意力转到了花式自拍。妈妈们这段时间get了哪些自拍方式呢?今天芝麻就来给大家介绍几款自拍神器!分分钟拍出大片既视感。01薯片袋最近爆火的就

    2023年01月07 241
  • 涵字多少画,涵到底是11画还是12画

    陈振桂教授目前已出版著作100本,其中大学教材10本,两本是国家规划教材。五格数理起名常用字(一画)一、乙。五格数理起名常用字(二画)乃、了、力、丁、刀、刁、二、又、人、入、七、十、几。五格数理起名常

    2023年03月08 253
  • 有多少笔画,有多少笔画数

    一、一笔画问题的含义及判别标准1、最少笔画数的含义:即判断一个图形至少需要几笔画成(注意:图形画的时候不能重复来回画)。由于在考试的时候,考查一个图形是否能够一笔画的情况最多,也为了将此问题与汉字笔画

    2023年02月25 266
  • 趋势线怎么画,如何在k线图上画趋势线

    我们来给大家讲一下关于趋势应用的技巧。在这儿我们要给大家提一个概念,就是关于趋势线。因为在这个趋势应用中的趋势线是一个很好的指标,如何在k线图上画趋势线,比如说我们通过画趋势线我们就可以识别出来,这就

    2023年01月20 289
  • 正方形怎样画,画个正方体怎么画

    我们一起每天进步一点点Hello~大家下午好~之前我们学过怎么画球体。今天就来学习一下素描正方体。都是很基础的内容。1、首先要画一个正方形,要注意对边平行,长短相等。2、在正方形上画两条平行线,因为视

    2023年01月02 284
关注微信