0 背景
编码是一个具有挑战的心智和体力活动,要做好它不是很容易。此篇为《代码整洁之道——程序员的职业素养》的第三篇读书心得,主要讲的是良好的编码习惯。可以用于纠正我们平时低效、不好的编程习惯,抑或是让我们认识到好的编程习惯并去培养它。
1 好的编码的要求
- 1,代码必须正常工作。
- 2,代码必须能帮助用户解决问题。
- 很多时候客户提出的要求,并没有真正解决他们的问题,还需要你去发现这个问题并与客户交流
- 3,代码必须做到和现有系统结合的天衣无缝。
- 不能让系统变得脆弱、羞涩,处理好依赖关系,遵循稳健的工程原则。
- 4,其他程序员必须能读懂你的代码。
- 尽心锤炼表达,是它们能表达你的编程意图。(程序员最难精通的一件事)
2 错误的编码方式
- 1,感到疲劳或者心烦意乱时不要编码。
- 疲劳:奉献和职业精神更多的是遵守纪律原则而非长时间工作的工作狂。
- 例如凌晨三点还在编码,那样导致结果会是,由于存在很多bug后面还要返工重做。
- 解决方法:休息一会儿或者是去睡觉第二天再来写。
- 心烦意乱:例如和妻子吵架、家中小孩生病、出现金钱方面的问题等,在这样的情况下,如果硬逼自己写出来的代码,后面也大多数会被抛弃(如果与之长期相伴,那就更糟糕了。)
- 解决方法:专门花一块时间,或许是一个小时,来处理造成焦虑的问题。(理想情况应该是用私人时间处理私人问题,因为专业开发人员都善于分配时间。)
- 疲劳:奉献和职业精神更多的是遵守纪律原则而非长时间工作的工作狂。
- 2,避免自己陷入流态区。
- 流态区:自己一个人专注埋头开发代码,为了追求所谓的速度,(认为自己效率极高)放弃顾及全局,写一些后来不得不推到重来的决策。(自己练习的时候,不在此情况)
- 陷入的情况:边听音乐边写代码,越写越high
- 避免方法:
- 结对编程
- 感觉自己要陷入的时候,放在手头的工作,做一些其他事情(如刷刷朋友圈、回一下邮件)
- 特殊情况:当自己在努力理解一些复杂的东西时,且被别人打断,可以使用结对编程、TDD(测试驱动开发)帮助自己快速回复被打断时的思维。
- 3,死活写不出代码时(没有创造性的思维时)
- 结对编程/做一些其他事情调整一下脑子
3 良好的编码习惯
3.1 创造性输入
因为“创造性输出”依赖于“创造新输入“。但是如何做到创造性输入呢?
- 广泛阅读、具有创造性、开创性的视频
3.2 调试
很多认为调试≠编码时间,但是对于公司来说,调试和编码时间同样宝贵,最理想的就是避免或者时消除调试。可以使用“测试驱动开发”来降低调试时间,(制造出很多bug的开发人员不专业,就像医生不喜欢重新打开病人的胸腔区修复此前犯下的错误)
3.3 保持节奏
软件开发是一场马拉松,只有通过保存体力和维持稳定节奏来取胜。(专业程序员也会保持精力和创造力)
当感到疲劳时,去休息。当遇到困难受阻时,就放松一会儿。(换一种思维)
坚持自己的估算,(抵制盲目冲刺的诱惑)不要为了缩短进度加班加点的工作,除非
- 1,个人能挤出这些时间;
- 2,短期加班,最多加班两周;
- 3,老板要有后背方案,以防加班失败的措施。
3.4 进度控制
当避免过分乐观而夸下过短的开发时间的海口。
面对进度时,做到早起检测、保持透明,要分清和严守乐观预估、标准预估、悲观预估的时间点,把数字告诉团队和利益相关者。
面对别经理的不合理的期望,(如10天完成一个产品)要让团队和利益相关者明白这是不可能的事,除非另有预备方案,否则不要轻易退步来让任何人对此抱有期望。
3.5 准确定义“完成”
创建一个准确定义的“完成“标准来避免交付失误,让业务分析师和团队人员创建一个自动化的验收测试。(只有完全通过这些严守测试,开发任务才算完成)
3.6 帮助和接受他人
以帮助人为荣,因为自己也有需要帮助的时候。帮助他人还可以让自己站在一个新的视角、更清晰问题看待问题。
程序员往往都是自负、内向、固执的,(喜欢沉浸在各种细枝末节和摆弄各种概念,以证明自己拥有这个星球最发达的大脑。)遇到问题会把自己一个人堵在那里很久,这是很不专业的表现,有时应该去向他人请教。乐于接受他人的帮助,就算那个人不能给予自己真正的帮助,也可以给他一点时间(几分钟到十几分钟)再以致谢感谢结束谈话。
3.7 辅导
作为年轻疼,把向资深倒是寻求辅导作为一种职责,资深人士也有职责应该花时间手把手辅导年轻程序员,