我正在开发一个键值存储抽象层,就像JDBC或ActiveRecord一样,我想提供不同级别的API,这样最基本的就是:
get Key
set Key, Value
exists Key
delete Key
但是,我还想提供另一个API,它提供更低级别的细节,可以与CAP定理数据存储一起使用,例如:
get Key, Number_of_nodes_to_read_from
set Key, Value, Number_of_nodes_to_write_to
exists Key, Number_of_nodes_to_check
delete Key, Number_of_nodes_to_check, timeout_in_milliseconds
:为了让事情变得非常复杂,我还想要一个可以添加增值东西的API,例如地图缩减器,索引,带字段的记录,搜索。
无论如何,我的问题是我是否应该制作一个庞大的功能列表,或者我应该拆分API,记住我可能希望将来添加到API中。
由于
祖拜尔
注意:我原来的问题在这里:
答案 0 :(得分:1)
代替冗长的回答,我强烈建议您观看名为“How To Design A Good API and Why it Matters”的Google Techtalk,因为我相信它会解决您的问题。
我自己的建议是仅通过语言提供的内置地图或字典界面公开您的API,直到有必要为用户提供更高级别的控制。如果从一开始就暴露太多,你就会把自己锁定在你的特定实现中,这完全违背了API的目的......也就是提供抽象。
答案 1 :(得分:1)
get Key, Map_of_params
如何?
第二个参数可以是一个简单的键值映射。