《代码整洁之道——程序员的职业素养》读书笔记(一)
一些废话
这本书半年前读过,应该是没有读完,因为这半年里Bob大叔在书的前半部分说的话,一直在我的耳畔回响,并对我的职业习惯有了很大的影响,也不一定很大,但是至少心里有了那个意识,“专业”的意识。
前几天端午节,又读了这本书,这回读完了,觉得获益匪浅,又觉得收获太少。获益匪浅:真的是收获了好多。收获太少:书里的宝贵东西太多了,自己还有好多没有吸收,觉得好可惜。我过去习惯并不好,不爱读书,更是没有做读书笔记的习惯,也没怎么见过别人怎么做读书笔记。
想要做一个专业的人,也很想做一些改变。于是,再次拿起这本书,开始在我看来算是精读的精读。今天只读了第1章,有一些觉得很对的话,还有一些觉得应该掌握的但没有掌握的技能。我的记性不太好,做笔记应该是一个不错且必要的事情。
之前也没有写过自己的博客,这也算是我的第一篇博文?如果这算是博文的话。
第1章
一些觉得很对的话
- “专业主义”有很深的含义,它不但象征着荣誉与骄傲,而且明确意味着责任与义务。
- 成熟的专业开发人员知道,聪明人不会为了发布新功能而破坏结构。
- 专业的软件开发人员会牢记创建灵活可维护的结构的软件设计原则和模式,并在开发软件时认真遵循。
- 如果你希望自己的软件灵活可变,那就应该时常修改它。
- 让软件保持固定不变才是危险的!
- 不写代码的架构师必然遭殃,他们很快会发现自己跟不上时代了;不学习新语言的程序员同样会遭殃,他们只能眼睁睁看着软件业一路发展,把自己抛在后面;学不会新规矩和新技术的开发人员更可怜,他们只能在日渐沦落的时候看着身边人越发优秀。
- 读书,看相关文章,关注博客和微博,参加技术大会,访问用户群,多参与读书与学习小组。
- 业精于勤。真正的专业人士往往勤学苦干,以求得自身技能的纯熟精炼。
- 练习,指的是在日常工作之余专门练习技能,以期自我提升。
- 练卡塔的目的不是找出解决方法,而是训练你的手指和大脑。
- 专业软件开发人员往往会更加努力地尝试与他人一起编程、一起练习、一起设计、一起计划,这样他们可以从彼此身上学到很多东西,而且能在更短地时间内更高质量地完成更多工作。
- 想迅速牢固地掌握某些事实和观念,最好的办法就是与你负责指导的人交流这些内容。
- 专业人士会视辅导新人为己任,他们不会放任未经辅导的新手恣意妄为。
- 每位专业软件开发人员都有义务了解自己开发的解决方案所对应的业务领域。
- 开始一个新领域的项目时,应当读一两本该领域相关的书,要就该领域的基础架构与基本知识作客户和用户访谈,还应当花时间和业内专家交流,了解他们的原则与价值观念。
- 雇主的问题就是你的问题,你必须弄明白这些问题,并寻求最佳的解决方案。
- 开发人员之间互相认同是容易的,但把一方换成雇主,人们就容易产生“彼”“此”之分,专业人士会尽全力避免这样的狭隘之见。
一些觉得应该掌握的技能
- 自动化单元测试
- 测试驱动开发(TDD)
- 单元测试和验收测试
- 创建灵活可维护的结构的软件设计原则和模式
- switch语句改为多态结构
- N-S(Nassi-Schneiderman)图表
- “米利型”(Mealy)和“摩尔型”(Moore)状态机
- “变换分析”(Transform Analysis)
- 用数据流图进行功能分解
- “临时传递数据”(Tramp Data)
- “耦合性”(Conascence)
- Parnas表
- “瀑布式开发”
- 每个专业软件开发人员必须精通的事项:
- 设计模式。必须能描述GOF书中的全部24中模式,同时还要有POSA书中的多数模式的实战经验。
- 设计原则。必须了解SOLID原则,而且要深刻理解组件设计原则。
- 方法。必须理解XP、Scrum、精益、看板、瀑布、结构化分析及结构化设计等。
- 实践。必须掌握测试驱动开发、面向对象设计、结构化编程、持续集成和结对编程。
- 工件。必须了解如何使用UML图、DFD图、结构图、Petri网络图、状态迁移图表、流程图和决策表。