69
Trisha Gee #GeeCON 来来 10gen 来 Java 来来来来来来来来 @trisha_gee 来来来来 来来来来来来 ??

What do you mean, Backwards Compatibility? (Chinese)

Embed Size (px)

DESCRIPTION

Slides from my session at JavaOne Shanghai

Citation preview

Page 1: What do you mean, Backwards Compatibility? (Chinese)

Trisha Gee

#GeeCON

来自 10gen 的 Java 驱动程序开发人员@trisha_gee

要讲什么?向后兼容性?要讲什么?向后兼容性?

Page 2: What do you mean, Backwards Compatibility? (Chinese)

设计:将需求转化为描述系统的全局架构和功能的技术

规范。

http://homepages.cwi.nl/~paulk/patents/isnot/node4.html

Page 3: What do you mean, Backwards Compatibility? (Chinese)

管理大型软件系统的开发 — Winston Royce 博士

http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf

Page 4: What do you mean, Backwards Compatibility? (Chinese)

灵活的设计

< 此页特意保留空白 >

Page 5: What do you mean, Backwards Compatibility? (Chinese)

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

Page 6: What do you mean, Backwards Compatibility? (Chinese)

•设计是一次旅行,享受您的旅程

•您会遇到怪物

•也会发现密室

•甚至可能没有目的地……

要讲什么?

Page 7: What do you mean, Backwards Compatibility? (Chinese)

史上最好的工作!!史上最好的工作!!

Page 8: What do you mean, Backwards Compatibility? (Chinese)

我们出发喽!

Page 9: What do you mean, Backwards Compatibility? (Chinese)

向后兼容性

Page 10: What do you mean, Backwards Compatibility? (Chinese)

诸多的未知

Page 11: What do you mean, Backwards Compatibility? (Chinese)

设计目标

Page 12: What do you mean, Backwards Compatibility? (Chinese)

没错,这是一个文档

Page 13: What do you mean, Backwards Compatibility? (Chinese)

设计目标•一致性

•更明晰的设计

•直观的 API

•稳健的异常处理

•测试友好

•向后兼容性

Page 14: What do you mean, Backwards Compatibility? (Chinese)

缺乏一致性

Page 15: What do you mean, Backwards Compatibility? (Chinese)

编码标准

Page 16: What do you mean, Backwards Compatibility? (Chinese)

没有分析错误

Page 17: What do you mean, Backwards Compatibility? (Chinese)

不再有争执

Page 18: What do you mean, Backwards Compatibility? (Chinese)

设计目标✓一致性

•更明晰的设计

•直观的 API

•稳健的异常处理

•测试友好

•向后兼容

Page 19: What do you mean, Backwards Compatibility? (Chinese)

用户

Page 20: What do you mean, Backwards Compatibility? (Chinese)

认识我们的用户

Page 21: What do you mean, Backwards Compatibility? (Chinese)

1. Java 开发人员2.ODM / 其他驱动程序 / 第三方3.贡献者

三类用户

Page 22: What do you mean, Backwards Compatibility? (Chinese)

Java 开发人员•一致性

•更明晰的设计

•直观的 API

•稳健的异常处理

•测试友好

•向后兼容

Page 23: What do you mean, Backwards Compatibility? (Chinese)

第三方库•一致性

•更明晰的设计

•直观的 API

•稳健的异常处理

•测试友好

•向后兼容

Page 24: What do you mean, Backwards Compatibility? (Chinese)

贡献者•一致性

•更明晰的设计

•直观的 API

•稳健的异常处理

•测试友好

•向后兼容

Page 25: What do you mean, Backwards Compatibility? (Chinese)

用户是我们的朋友

Page 26: What do you mean, Backwards Compatibility? (Chinese)

向后兼容性

Page 27: What do you mean, Backwards Compatibility? (Chinese)

架构

Page 28: What do you mean, Backwards Compatibility? (Chinese)

UML ,呵呵

Page 29: What do you mean, Backwards Compatibility? (Chinese)

高级架构

Page 30: What do you mean, Backwards Compatibility? (Chinese)

Scala 驱动程序

Page 31: What do you mean, Backwards Compatibility? (Chinese)

设计目标•一致性

✓更明晰的设计

•直观的 API

•稳健的异常处理

•测试友好

•向后兼容

Page 32: What do you mean, Backwards Compatibility? (Chinese)

设计目标•一致性

•更明晰的设计

•直观的 API

•稳健的异常处理

•测试友好

•向后兼容

Page 33: What do you mean, Backwards Compatibility? (Chinese)

高级架构

Page 34: What do you mean, Backwards Compatibility? (Chinese)

选择 1 :包装

Page 35: What do you mean, Backwards Compatibility? (Chinese)

选择 2 :连接

Page 36: What do you mean, Backwards Compatibility? (Chinese)

向后兼容性?

Page 37: What do you mean, Backwards Compatibility? (Chinese)

测试通过

Page 38: What do you mean, Backwards Compatibility? (Chinese)

我们赢了!

Page 39: What do you mean, Backwards Compatibility? (Chinese)

设计目标•一致性

•更明晰的设计

•直观的 API

•稳健的异常处理

•测试友好

✓向后兼容

Page 40: What do you mean, Backwards Compatibility? (Chinese)

我们还活着……

Page 41: What do you mean, Backwards Compatibility? (Chinese)

公共 API

Page 42: What do you mean, Backwards Compatibility? (Chinese)

设计目标•一致性

•更明晰的设计

•直观的 API

•稳健的异常处理

•测试友好

•向后兼容

Page 43: What do you mean, Backwards Compatibility? (Chinese)

注意

•它看起来不像这样

•尚未决定一致的名称

•需要某种适合所有驱动程序的 API

Page 44: What do you mean, Backwards Compatibility? (Chinese)

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

collection.find(query).skip(1000).limit(100);

Page 45: What do you mean, Backwards Compatibility? (Chinese)

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

collection.find(query).skip(1000).limit(100);

collection.find(query, fields);

Page 46: What do you mean, Backwards Compatibility? (Chinese)

应选择哪一个?

Page 47: What do you mean, Backwards Compatibility? (Chinese)

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

collection.find(query).skip(1000).limit(100);

collection.find(query, fields);

collection.find(query).fields(fieldsToSelect);

Page 48: What do you mean, Backwards Compatibility? (Chinese)

更少的决定

Page 49: What do you mean, Backwards Compatibility? (Chinese)

“ Cmd + space”友好

Page 50: What do you mean, Backwards Compatibility? (Chinese)

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

collection.find(query).skip(1000).limit(100);

collection.find(query, fields);

collection.find(query).select(fields);

Page 51: What do you mean, Backwards Compatibility? (Chinese)

删除collection.remove(query);

collection.find(query).remove();

Page 52: What do you mean, Backwards Compatibility? (Chinese)

查找并修改collection.findAndModify(query, update);

collection.find(query).updateOneAndGet(update);

Page 53: What do you mean, Backwards Compatibility? (Chinese)

这令人讨厌!

Page 54: What do you mean, Backwards Compatibility? (Chinese)

查找并修改collection.findAndModify(query, update);

collection.find(query)

.updateOneAndGet(update);

collection.findAndModify(query,

fields,

sort,

false,

update,

true,

false);

collection.find(query)

.sort(sort)

.updateOneAndGet(update);

Page 55: What do you mean, Backwards Compatibility? (Chinese)

查找并修改collection.findAndModify(query, update);

collection.find(query)

.updateOneAndGet(update);

collection.findAndModify(query,

fields,

sort,

false,

update,

true,

false);

collection.find(query)

.sort(sort)

.updateOneAndGet(update);

collection.find(query)

.sort(sort)

.getOneAndUpdate(update);

Page 56: What do you mean, Backwards Compatibility? (Chinese)

缺乏一致性

Page 57: What do you mean, Backwards Compatibility? (Chinese)

最终的一致性collection.find(query).limit(10);

collection.find(query).limit(10).remove();

collection.find(query).sort(sortCriteria).getOne();

collection.find(query).sort(sortCriteria).remove();

collection.find(query).sort(sortCriteria).count();

Page 58: What do you mean, Backwards Compatibility? (Chinese)

全玩完了

✓ 一致性

• 更明晰的设计

• 直观的 API

• 稳健的异常处理

• 测试友好

• 向后兼容

Page 59: What do you mean, Backwards Compatibility? (Chinese)

设计目标•一致性

•更明晰的设计

•直观的 API……

•稳健的异常处理

•测试友好

•向后兼容

Page 60: What do you mean, Backwards Compatibility? (Chinese)

我们还活着!

Page 61: What do you mean, Backwards Compatibility? (Chinese)

教程 / 外聘讲座

Page 62: What do you mean, Backwards Compatibility? (Chinese)

本演讲

Page 63: What do you mean, Backwards Compatibility? (Chinese)

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

Page 64: What do you mean, Backwards Compatibility? (Chinese)

问答问答

Page 65: What do you mean, Backwards Compatibility? (Chinese)

您在使用 Java 驱动程序吗?

Page 66: What do you mean, Backwards Compatibility? (Chinese)

您喜欢它的什么?

Page 67: What do you mean, Backwards Compatibility? (Chinese)

您不喜欢什么?

Page 68: What do you mean, Backwards Compatibility? (Chinese)

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

Page 69: What do you mean, Backwards Compatibility? (Chinese)

问题反馈问题反馈• Trisha Gee• [email protected]•@trisha_gee