1 / 69

要讲什么?向后兼容性?

#GeeCON. 要讲什么?向后兼容性?. Trisha Gee. 来自 10gen 的 Java 驱动程序开发人员 @trisha_gee. 设计: 将需求转化为描述系统的全局架构和功能的技术规范。. http://homepages.cwi.nl/~paulk/patents/isnot/node4.html. 管理大型软件系统的开发 — Winston Royce 博士. http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf. < 此页特意保留空白 >. 灵活的设计.

Download Presentation

要讲什么?向后兼容性?

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. #GeeCON 要讲什么?向后兼容性? Trisha Gee 来自 10gen 的 Java 驱动程序开发人员 @trisha_gee

  2. 设计:将需求转化为描述系统的全局架构和功能的技术规范。设计:将需求转化为描述系统的全局架构和功能的技术规范。 http://homepages.cwi.nl/~paulk/patents/isnot/node4.html

  3. 管理大型软件系统的开发— Winston Royce 博士 http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf

  4. <此页特意保留空白> 灵活的设计

  5. 设计是一个过程,而不是一个文档

  6. 要讲什么? • 设计是一次旅行,享受您的旅程 • 您会遇到怪物 • 也会发现密室 • 甚至可能没有目的地……

  7. 史上最好的工作!!

  8. 我们出发喽!

  9. 向后兼容性

  10. 诸多的未知

  11. 设计目标

  12. 没错,这是一个文档

  13. 设计目标 • 一致性 • 更明晰的设计 • 直观的 API • 稳健的异常处理 • 测试友好 • 向后兼容性

  14. 缺乏一致性

  15. 编码标准

  16. 没有分析错误

  17. 不再有争执

  18. 设计目标 • 一致性 • 更明晰的设计 • 直观的 API • 稳健的异常处理 • 测试友好 • 向后兼容

  19. 用户

  20. 认识我们的用户

  21. 三类用户 • Java 开发人员 • ODM / 其他驱动程序 / 第三方 • 贡献者

  22. Java 开发人员 • 一致性 • 更明晰的设计 • 直观的 API • 稳健的异常处理 • 测试友好 • 向后兼容

  23. 第三方库 • 一致性 • 更明晰的设计 • 直观的 API • 稳健的异常处理 • 测试友好 • 向后兼容

  24. 贡献者 • 一致性 • 更明晰的设计 • 直观的 API • 稳健的异常处理 • 测试友好 • 向后兼容

  25. 用户是我们的朋友

  26. 向后兼容性

  27. 架构

  28. UML,呵呵

  29. 高级架构

  30. Scala 驱动程序

  31. 设计目标 • 一致性 • 更明晰的设计 • 直观的 API • 稳健的异常处理 • 测试友好 • 向后兼容

  32. 设计目标 • 一致性 • 更明晰的设计 • 直观的 API • 稳健的异常处理 • 测试友好 • 向后兼容

  33. 高级架构

  34. 选择 1:包装

  35. 选择 2:连接

  36. 向后兼容性?

  37. 测试通过

  38. 我们赢了!

  39. 设计目标 • 一致性 • 更明晰的设计 • 直观的 API • 稳健的异常处理 • 测试友好 • 向后兼容

  40. 我们还活着……

  41. 公共 API

  42. 设计目标 • 一致性 • 更明晰的设计 • 直观的 API • 稳健的异常处理 • 测试友好 • 向后兼容

  43. 注意 • 它看起来不像这样 • 尚未决定一致的名称 • 需要某种适合所有驱动程序的 API

  44. 查找 collection.find(query).skip(1000).limit(100); collection.find(query).skip(1000).limit(100);

  45. 查找 collection.find(query).skip(1000).limit(100); collection.find(query).skip(1000).limit(100); collection.find(query, fields);

  46. 应选择哪一个?

  47. 查找 collection.find(query).skip(1000).limit(100); collection.find(query).skip(1000).limit(100); collection.find(query, fields); collection.find(query).fields(fieldsToSelect);

  48. 更少的决定

  49. “Cmd + space”友好

  50. 查找 collection.find(query).skip(1000).limit(100); collection.find(query).skip(1000).limit(100); collection.find(query, fields); collection.find(query).select(fields);

More Related