《高效程序员的45个习惯》读书笔记

2019/08/20

敏捷开发

概括

在高度协作的环境中不断地使用反馈进行自我调整和完善

敏捷开发宣言

  • 个体和交互胜过过程和工具
  • 可工作的软件胜过面面俱到的文档
  • 客户写作胜过合同谈判
  • 响应变化胜过遵循计划

敏捷开发的重点

  • 团队中的每个人都具备职业精神和积极专业的工作态度
  • 团队共享代码和开发任务,每个人都跟进最新情况
  • 持续开发,持续集成,持续重构
  • 频繁迭代

45个习惯

态度

1 把精力放在做事上

  • 抓住主要矛盾的主要方面
  • 出了问题,关注如何解决而不是找出犯错者

2 欲速则不达

  • 保持代码高质量
  • 不使用未理解或不可读的代码

3 对事不对人

  • 有技巧地指出他人的问题,不要伤害他人
  • 团体决策技巧
    设定DeadLine
    从正反两面思考
    设立会议仲裁人
    拥护既有决定
    

4 排除万难,奋勇直前

  • 敢于坚持原则
  • 敢于指出错误
  • 敢于面对实情

持续学习

5 持久跟进技术发展

  • 增量式学习,小步紧跟
  • 通过阅读博客和社区讨论了解最新技术
  • 参与活动和讨论
  • 阅读

6 对团队投资,助团队成长

7 打破旧习惯,丢弃过时的东西

8 打破砂锅问到底,找到问题的根源而非停留在问题的表象

9 有远见地把握节奏

  • 不随意进行时间安排
  • 有规律地迭代

交付

10 业务问题让客户做决定

  • 记录客户的决定和原因
  • 问有价值的问题

11 设计指导开发,而非操纵开发

  • 前期只做战略设计
  • 战术设计留到问题清晰时
  • 不提前对未确定的东西做详细设计

12 合理使用技术

  • 考虑是否能真正解决问题
  • 考虑维护成本
  • 考虑是否有更简单方案
  • 考虑是否具有可取消性,是否会产生严重依赖
  • 技术应该是帮助工作的工具,它本身不应该成为工作
  • 不重复造轮子

13 保持项目的可发布性

  • 避免代码版本冲突
  • 借助持续集成工具
  • 代码修改不能破坏既有系统,且应尽量让同伴知晓

14 提早集成,频繁集成

  • 用好mock

15 提早实现自动化部署

16 频繁演示以得到反馈

  • 维护项目术语表,以提高沟通有效性

17 使用短迭代,增量发布

  • 短时间开发足够好的,胜过长时间开发超级好的
  • 越早发布,越早抢占市场;越早得到反馈,越快进一步打磨
  • 紧跟环境变化和用户需求变化

18 项目价格应该是灵活变动的

敏捷反馈

19 使用自动化单元测试

  • 保证单元测试覆盖率和质量足够高
  • 单元测试能及时提供反馈
  • 单元测试让代码更健壮
  • 单元测试是可靠的设计工具
  • 单元测试给开发者以自信
  • 单元测试是解决问题的探测器
  • 单元测试是可信的文档和学习工具

20 测试驱动开发

  • 先使用后实现
  • 站在使用者的角度开发
  • 测试驱动设计

21 关心平台和环境

  • 保证代码的可移植性
  • 借助持续集成工具进行自动化跨平台测试

22 自动验收测试

  • 为用户提供傻瓜式测试工具
  • 利用好用户的既有数据

23 度量真实进度

  • 经常比较预估工作量与实际工作量,以此增强自己的评估能力
  • 使用带优先级的待办事项列表

24 倾听用户声音

  • 提供易用的产品和易读的文档
  • 提供有价值的出错信息
  • 收集用户反馈,对产品进行调整

敏捷编码

25 代码要清晰地表达意图

  • 避免魔法值
  • 创建专门的对象作为锁,而不是锁住this

26 用代码沟通

  • 使用优雅的变量名
  • doc要素
    目的
    需求(前置条件)
    承诺(后置条件)
    异常
    
  • 不添加不必要的注释

27 动态评估取舍

  • 不必事事完美
  • 考虑成本
  • 关注核心需求
  • 不要过早考虑优化

28 增量式编程

29 保持简单(KISS)

30 编写内聚的代码

31 严格封装

  • 区分命令型和查询型方法,后者应具有幂等性

32 合理使用继承和组合

敏捷调试

33 记录解决问题的日志

34 不忽略Warning

35 对问题各个击破

36 报告所有异常

37 提供有用的错误信息

敏捷协作

38 安排站立会议

39 架构师必须写代码

40 实行代码集体所有制

41 成为指导者和分享者

  • 对团队投资

42 让别人自己找到办法

43 准备好后才共享代码

  • 不提交仍在开发的代码

44 做代码复查

  • 代码刚完成时是最好的检查时机
  • 使用代码分析工具

45 及时报告进展与问题


(转载本站文章请注明作者和出处)

Show Disqus Comments

Post Directory