2017-09-04 59 views
2

以下哪种设计被认为对API更好?为什么?API设计 - 使用对象还是集合作为参数?

apiMethod(Map<A, B> aToB)

apiMethod(MapWrapper<A, B> mapWrapper) 其中MapWrapper是简单地包含对地图的引用的类。

这两种方法的优缺点是什么?

+0

我希望有一个模型类作为参数,而不是通用的'Map'。 'MapWrapper'也没有意义 - 增加的价值会有'Map'吗? – lexicore

+0

第一个,添加一个包装是没有意义的。可能比使用地图更好的设计是可能的。 – Oleg

+0

那个地图是由什么负责的? – Andrew

回答

3

您一直在努力寻找“简约”的API。

在这种情况下:当您的API在传递地图时工作 - 那么当然您选择该路径。为什么把你的客户的负担放在首位换行那地图?!

选项1的专业人员是 - 这是直线前进的道路。

尽管选项2只有使其难以使用API​​的缺点。

换句话说:如果中央该属性的“属性”是“要成为一个地图” - 那么它应该作为地图传递。但是,当“中心主题”是不同的 - 那么你传递了其他主题的东西。

0

我认为使用Map作为API的一个参数是不好的做法,因为很难理解你的API真正需要什么。在一些古老的代码,我发现类似的方法:

doSomeStuff(Session session){ 
    String aa = session.get("aa"); 
    String bb = session.get("bb"); 
    return aa + bb; 
} 

这段代码的重构将是:

doSomeStuff(String aa, String bb){ 
    return aa + bb; 
} 

,你知道你需要aabb打电话给你的API。

相关问题