
代码整洁之道(程序员的职业素养)
本书的态度:提倡要诚信,要富有荣誉感、自尊心和自豪感,要勇于承担作为一名手艺人和工程师所肩负的重大责任。这种责任包括要努力工作,出色完成工作;要善于沟通,能够就事论事;要管理好时间,能够坦然面对艰难的“风险回报”决策。
专业主义
专业主义的精髓就在于将公司利益视同为个人利益。“专业主义”意味着担当责任。
没有对例行程序进行测试时不负责任的。
你写的每一行代码都要测试。
写代码是因为想执行它,如果希望代码可以执行,就该知道它是否可行。要知道它是否可行,就一定要对它进行测试。
所有软件项目的根本指导原则是:软件要易于修改。
急于树立威望的管理层加入更多的开发人员来加快项目进度,但这些开发人员只会进一步破坏结构,乱上添乱。
如果你希望自己的软件灵活可变,那就应该时常修改它。
对每个模块,每检入一次代码,就要让它比上次检出时更为简洁。每次度代码,都别忘了进行点滴的改善。
每个专业开发人员必须精通的事项
-
设计模式。GOF POSA
-
设计原则。 SOLID原则 组件设计原则
-
方法。XP Scrum 精益 看板 瀑布 结构化分析及结构化设计
-
实践。测试驱动开发 面向对象设计 结构化编程 持续集成 结对编程
-
工件。UML图 DFD图 结构图 Petri网络图 状态迁移图标 流程图 决策图
每次开发系统,都应该站在雇主的角度来思考可确保开发的功能真正能满足雇主的需要。
说“不”
专业人士应该懂得说“不”
为什么远不如“事实”重要
专业人士常常会成为英雄人物。他们之所以成为英雄人物,是因为他们出色地完成了任务,不但按时,而且符合预算。
说“是”
承诺:口头上说。心理认真。付诸行动。三个步骤
- 口头说自己将会去做
- 心理认真对待做出的承诺
- 真正付诸行动
专业人士不需要对所有请求都回答“是”。不过,他们应该努力寻找创新的方法,尽可能做到有求必应。
编码
要精熟掌握每项技艺,关键要悲剧“信心”和“出错感知”能力
如果感到疲劳或心烦意乱,千万不要编码。
在额外加班20%的工作时间内,其实你并无法完成20%的额外工作。
TDD
三项法则:
-
在编好失败单元测试之前,不要编写任何产品代码
-
只要有一个单元测试失败了,就不要再写测试代码;无法通过编译也是一种失败情况
-
产品代码恰好能够让当前失败的单元测试成功通过即可,不要多写
测试代码之于产品代码,就如抗体之于抗原一样。
测试
自动化测试工具:FitNesse Cucumber cuke4duke robotframework Selenium
请记住,身为专业开发人员,你的职责是协助团队开发出最棒的软件。也就是说,每个人都需要关心错误和疏忽,并协力改正。
避免压力
观察自己在危机时刻中的反应,就可以了解自己的信念。
选择那些你在危急时刻依然会遵守的纪律原则,并且在所有工作中都遵守这些记录。遵守这些纪律与按照是避免陷入危机的最好途径。
协作
我们并非是因为喜欢喝其他人在一起工作才选择做程序员的。我们都任务人际关系难以应付而且毫无规律。编程用的机器则整洁,行为也可预见。
专业程序员的首要职责是满足雇主的需求。
团队与项目
事实上并没有半个人的这种说法。让一个人程序员把一半的时间投入在项目A,把其余时间投入在项目B中,这并不可行。
有凝聚力的团队通常有12名成员。团队应该配有程序员、测试人员、分析师、一名项目经理。合理分配是:7名程序员、2名测试人员、2名分析师、1名项目经理。
在组建团队是,要给予团队充足的时间,让他们形成凝聚力,一直共同工作,成为不断交付项目的强大引擎。
辅导、学徒期与技艺
你还记得你写的第一个程序跑起来的那个时刻吗?它改变了你的生活并指引你大步踏上编程之路了吗?(PS:我写的第一个程序是)
工具
代码从来都不是问题,细节才是问题。