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

本书主要讲什么是专业的(Professional)程序员,成为专业的程序员,需要什么样的态度、原则、行动。

作者简介

Robert C.Martin,人称Bob大叔,真·骨灰级 程序员。书中他是这么介绍自己的:
“我编了42年的程序。这42年里,我什么都经历过。我被开除过,也被表扬过。我当过小组长,当过主管,也当过普通员工,甚至当过CEO。”
“我用过COBOL、FORTRAN、BAL、PDP-8、PDP-11、C、C++、Java、Ruby、Smalltalk。”
“20世纪70年代,并没有多少资深程序员。我后来去哪里工作,就是那里的资深程序员。”

书名讨论

本书原文名为:The Clean Coder. A code of Conduct for Professional Programmers
译名为:《代码整洁之道 程序员的职业素养》。我觉得翻译得不是很贴切,而且极易与另一本书搞混。
书名直译过来应该是:整洁的程序员。专业程序员的行为准则。(Clean这个词在这里不太好翻译,姑且译为整洁的吧)。本书强调的是Coder,是,是怎么做事、什么时候说Yes、什么时候说No。
作者还有另一本书,原文名为: Clean Code. A Handbook of Agile Software Craftsmanship.
译名为:《代码整洁之道》。是不是很上面那本书混淆了。这本书直译过来应该是:整洁的代码。敏捷软件开发指南。本书强调的是Code,是代码,怎么命名、写函数、写类等。

本书主要讲了以下几大内容:

  • 专业主义
  • 什么时候该说不,什么时候该说是
  • 如何高效地写代码
  • 测试的重要性以及执行方案
  • 时间管理
  • 预估工期
  • 如何避免压力、应对压力
  • 如何协作
  • 团队与项目
  • 程序员的不同阶段

1 专业主义

1.1 清楚你要什么

什么叫专业(Professional)?
当说一个人专业的时候,大家应该会想到娴熟的技艺,专注的态度,强烈的责任感。
如果一个人技术非常厉害,但工作态度不端正(做事随意、缺乏时间观念),恐怕是无法被称为专业。书中作者就讲到自己年轻的时候在公司虽然技术非常厉害,但缺乏责任感与时间观念,最后被公司开除的故事,可以说是专业一词的反面案例。

“专业主义”有很深的含义,它不但象征着荣誉骄傲,而且明确以为着责任与义务。
非专业人士不需要为自己所做的工作负责,他们大可把责任退给雇主。如果非专业人士把事情搞砸了,收拾摊子的往往是雇主;而专业人士如果反了错,只好自己收拾残局。
“专业注意”意味着担当责任。那么,我们改如何担当责任呢?

1.2 担当责任

1.3 首先,不行损害之事

1.3.1 不要破坏软件功能

  1. 让QA找不出任何问题;
  2. 要去确信代码正常运行;
  3. 自动化QA;

1.3.2 不要破坏结构

成熟的专业开发人员指导,聪明人不会为了发布新功能而破坏结构。
专业的软件开发人员会牢记这些原则和模式,并在开发软件的时候认真遵循。其中有一条就是,如果希望自己的软件灵活可变,那就应该常修改他。
有一种策略叫做“无情重构”:关注哪个模块,就对它做点简单的修改来改进结构。

1.4 职业道德

职业发展是你自己的事。雇主没有义务确保你在职场立于不败之地,也没有义务培训你,送你参加各种会议或给你买各种书籍充电。这些都是你自己的事。
你应该计划每周工作60小时。前40小时是给雇主的,后20小时是给自己的。在这剩余的20小时里,你应该看书、练习、学习,或做其他能提升职业能力的事情。

1.4.1 了解你的领域

每个软件开发人员必须精通的事项

  • 设计模式。必须能描述GOF书中的全部24中模式,同时还要有POSA书中的多数模式的实战经验。
  • 设计原则。必须了解SOLID原则,而且要深刻理解组件设计原则。
  • 方法。必须了解 XP、Scrum、精益、看板、瀑布、结构化分析及结构化设计等。
  • 实践。必须掌握测试驱动开发、面向对象设计、结构化编程、持续结成和结对编程。
  • 工作 。 必须了解如何试用UML图、DFD图、结构图、Petri网络图、状态迁移图表、流程图和决策表。

1.4.2 坚持学习

软件行业的飞速改变,意味着软件开发人员必须坚持广泛学习才不至于落伍。
不写代码的架构师必然遭殃,他们很快就会发现自己跟不上时代了;不学习新语言的程序员同样回遭殃,他们只能眼睁睁看着软件业一路发展,把自己抛在后面;学不会新规矩和新技术的开发人员更可怜,他们只能在日渐沦落的时候看着身边的人越发优秀。

1.4.3 练习

真正的专业人士往往勤学苦干,以求得则自身技能的纯熟精炼。只完成日常工作是不足以称为练习的,那只能算是种执行性质操作,而不是练习。练习,指的是在日常工作之余专门练习技能,以期自我提升。

1.4.4 合作

专业软件开发人员往往会更加努力地尝试与他人一起编程、一起练习、一起设计、一起计划,这样他们可以从彼此身上学到很多东西,而且能在更短的时间内更高质量的完成更多工作。

1.4.5 辅导

专业人士会视辅导新人为己任,他们不会放人未经辅导的新手恣意妄为。

1.4.6 了解业务领域

1.4.7 与雇主客户保持一致

每次开发系统,都应该站在雇主的角度来思考,确保开发的功能真正能满足雇主的需要。

1.4.8 谦逊


2 说“不”

专业人士敢于说明真相而不屈从于全是。专业人士有勇气对他们的经理说“不”。
奴隶没有权利说“不”,劳工或许也对说“不”有所顾虑,但是专业人士应该懂得说“不”。

对于无法完成的需求,要如实反映情况,要勇敢说不。在明确无法在规定时间内完成需求的情况下,承诺“尝试”是一种不诚实的表现。


3 说“是”

3.1 承诺用语

做出承诺,包含三个步骤:

  1. 口头上说自己将会去做;
  2. 心里认真对待做出的承诺;
  3. 真正付诸行动。

3.1.1 缺乏承诺的征兆

“需要/应当”,“希望/但愿”,“让我们”(而不是“让我”)

3.1.2 真正的承诺听起来是怎样的

“我 将在...之前...”
对自己讲过做某件事做了清晰的事实称述,而且还明确说明了完成期限。


4 编码

不要在太疲惫的时候编码。
不要在焦虑、情绪不稳定的时候编码。
不要禁不住诱惑盲目冲刺。


9 时间管理

9.1 会议

9.1.1 拒绝

受到邀请的会议没有必要全部参加。你应该理智地使用时间,谨慎选择,应该参加哪些会议,礼貌拒绝哪些会议。

9.1.2 离席

如果发现参加某个会议是在浪费时间,就应当像个礼貌的办法退出来。
继续参加对你没有太多意义的会议,是不专业的行为。

9.1.3 确定议程与目标

为了合理使用与会者的时间,会议应当有清晰的议程,确定每一个议题所话得时间,以及明确目标。

9.1.4 立会

  1. 昨天干了什么;
  2. 今天打算干什么;
  3. 遇到了什么问题;
    每个问题20秒,总共1分钟之内。

9.1.5 迭代计划会议

9.1.6 迭代回顾和Demo展示

9.1.7 争论/反对

如果观点无法在短时间(5-30min)里达成一致,就永远无法达成一致。唯一的出路,就是用数据说话。


10 预估

10.2 PERT

计划评估技术(PERT,Program Evaluation and Review Technique)
三元分析法:

  • O:乐观预估。
  • N:标称预付。概率最大的数字。
  • P:悲观预估。最糟糕的数字。
    任务期望完成时间: μ = (O + 4n + P) / 6
    任务的概率分布标准差:σ = (P - O) / 6
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容