《程序员修炼之道》之提示全集

《程序员修炼之道》之提示全集

计算机行业是一个发展非常迅速的行业,技术可谓是日新月异。同样,书籍也是更迭不断。书龄在二十年以上的书,少之又少。如果还能一直保持畅销,那绝对是凤毛麟角。而 《程序员修炼之道》 绝对算是这些神品中不可或缺的一本。

最近当当在搞读书节,又成功骗我入坑,买了几本心仪已久的书。《程序员修炼之道·第2版》被我成功收入囊中。打开书本,只看目录就感觉可以值回书价了。99 条提示,字字珠玑,金科玉律。忍不住发篇水文,推波助澜,让其发扬光大。

务实的哲学
  1. 关注你的技艺

  2. 思考!思考你的工作

  3. 你有选择权

  4. 提供选择,别找借口

  5. 不要放任破窗

  6. 做推动变革的催化剂

  7. 牢记全景

  8. 将质量要求视为需求问题

  9. 对知识组合做定期投资

  10. 批判性地分析你读到和听到的东西

  11. 英语就是另一门编程语言

  12. 说什么和怎么说同样重要

  13. 把文档嵌进去,而不是拴在表面

务实的方法
  1. 优秀的设计比糟糕的设计更容易变更

  2. DRY—​不要重复自己

  3. 让复用变得更容易

  4. 消除不想搞事物之间的影响

  5. 不设最终决定

  6. 放弃追逐时尚

  7. 使用曳光弹找到目标

  8. 用原型学习

  9. 靠近问题域编程

  10. 通过估算来避免意外

  11. 根据代码不断迭代进度表

基础工具
  1. 将知识用纯文本保存

  2. 发挥 Shell 命令的威力

  3. 游刃有余地使用编辑器

  4. 永远使用版本控制

  5. 去解决问题,而不是责备

  6. 不要恐慌

  7. 修代码前先让代码在测试中失败

  8. 读一下那些该死的出错信息

  9. “select”没出问题

  10. 不要假设,要证明

  11. 学习一门文本处理语言

务实的偏执
  1. 你无法写出完美的软件

  2. 通过契约进行设计

  3. 尽早崩溃

  4. 使用断言去预防不可能的事情

  5. 有始有终

  6. 在局部行动

  7. 小步前进——由始至终

  8. 避免占卜

宁折不弯
  1. 解耦代码让改变更容易

  2. 只管命令不要询问

  3. 不要链式调用方法

  4. 避免全局数据

  5. 如果全局唯一非常重要,那么将它包装到API 中

  6. 编程讲的是代码,而程序谈的是数据

  7. 不要囤积状态,传递下去

  8. 不要付继承税

  9. 尽量用接口来表达多态

  10. 用委托提供服务:“有一个”胜过“是一个”

  11. 利用 mixin 共享功能

  12. 使用外部配置参数化应用程序

并发
  1. 通过分析工作流来提高并发性

  2. 共享状态是不正确的状态

  3. 随机故障通常是并发问题

  4. 用角色实现并发性时不必共享状态

  5. 使用黑板来协调工作流

当你编码时
  1. 倾听你内心的蜥蜴

  2. 不要依赖巧合编程

  3. 评估算法的级别

  4. 对估算做测试

  5. 尽早重构,经常重构

  6. 测试与找 Bug 无关

  7. 测试是代码的第一个用户

  8. 既非自上而下,也不自下而上,基于端对端构建

  9. 为测试做设计

  10. 要对软件做测试,否则只能留给用户去做

  11. 使用基于特性的测试来校验假设

  12. 保持代码简洁,让攻击面最小

  13. 尽早打上安全补丁

  14. 好好取名;需要时更名

项目启动之前
  1. 无人确切知道自己想要什么

  2. 程序员帮助人们理解他们想要什么

  3. 需求是从反馈循环中学到的

  4. 和用户一起工作以便从用户角度思考

  5. 策略即元数据

  6. 使用项目术语表

  7. 不要跳出框框思考—​找到框框

  8. 不要一个人埋头钻进代码中

  9. 敏捷不是一个名词;敏捷有关你如何做事

务实的项目
  1. 维持小而稳定的团队

  2. 排上日程以待其成

  3. 组织全功能的团队

  4. 做能起作用的事,别赶时髦

  5. 在用户需要时交付

  6. 使用版本控制来驱动构建、测试和发布

  7. 尽早测试,经常测试,自动测试

  8. 直到所有的测试都已运行,编码才算完成

  9. 使用破坏者检测你的测试

  10. 测试状态覆盖率,而非代码覆盖率

  11. 每个 Bug 只找一次

  12. 不要使用手动程序

  13. 取悦用户,而不要只是交付代码

  14. 在作品上签名

  1. 先勿伤害

  2. 不要助纣为虐