Back to home

Practices of an Agile Developer

Practices of an Agile Developer

Chapter 1

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

  • Continuous development, not episodic
  • Inject energy

Chapter 2 态度

  • Blame doesn't fix bugs
  • Beware of land mines
  • Don't code in isolation
  • Use unit tests
  • Negativity kills innovation

Chapter 3 学无止境

  • Expensive mental models aren't discarded lightly

Chapter 4 交付用户想要的软件

  • Decide what you shouldn't decide 让你的客户做业务决定
  • Design should be only as detailed as needed to implement
  • CRC(Class, Responsibility, Cooperation) 卡片设计提供高阶设计 验证设计的标准,SOLID(Single Responsibility Principle, Open-ClosePrinciple, Liskov Substitution Principle, Dependency inversion principle, Interface segregation principle)
  • Good design - right over precision
  • Blindly picking a framework is like having kids to save taxes
  • Don't build what you can download
  • Checked-in code is always ready for action
  • Never accept big-bang intergration 5~10 times per day
  • Deploy from start
  • Requirements are as fluid as ink b8ab0cfc0d8122ce51ada5721e874fdb.png
  • 万有引力总是在起作用,我们的计算存在误差,持续积累的误差导致了和预期的不一致
  • show me a detail long-term plan, and I'll show you a project that's doomed
  • A fixed price guarantees a broken promise

Chapter 5 敏捷反馈

  • Coding feedback 编写能够产生反馈的代码

    • 单元测试及时反馈
    • 单元测试让代码更加健壮
    • 单元测试是有用的设计工具
    • 单元测试让你自己的后台
    • 单元测试是解决问题时的探测器
    • 单元测试是可信的文档
    • 单元测试是学习工具
  • Write tests before writing code

  • Good design doesn't mean more classes

  • Automate to save time

  • Focus on where you're going

  • It is a bug

Chapter 6 敏捷编码

  • PIE(Program Intently and Expressively)
  • 应该让自己或者团队中的其他任何人,可以读懂自己一年前写的代码,而且只读一遍。
  • Don't comment to cover up
  • No Best solution 动态评估权衡,考虑性能,便利性,生产力,成本,实践。
  • 编写增量代码
  • Simple is not simplistic
  • 编写高内聚代码

Screen Shot 2013-01-04 at 1.09.59 PM.png

  • Keep commands separate from queries
  • Use inheritance for is-a; use delegation for has-a or uses-a

Chapter 7 敏捷调试

  • Don't get burned twice
  • 将警告视为错误
  • Prototype to isolate
  • 使用异常
  • 提供有用的错误信息 程序缺陷,环境问题,用户错误

Chapter 8 敏捷协作

  • 定期会议 站立会议
  • You can't code in PowerPoint 架构师必须写代码
  • 代码集体所有制
  • Knowledge grows when given 成为指导者
  • 允许大家自己想办法
  • 准备好后再共享代码
  • 代码复查
  • 及时通报进展与问题

Chapter 9 走向敏捷

NA

Conclusion

这本书的要点和我工作似乎有很大一部分的重合。这太好了,起码在一个作坊式的环境里,这仍然鼓舞我坚持自己的看法。