api设计-使用对象或集合作为参数?

91zkwejq  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(432)

关闭。这个问题是基于意见的。它目前不接受答案。
**想改进这个问题吗?**更新这个问题,这样就可以通过编辑这篇文章用事实和引文来回答。

两年前关门了。
改进这个问题
以下哪种设计被认为更适合api?为什么? apiMethod(Map<A, B> aToB)apiMethod(MapWrapper<A, B> mapWrapper) 哪里 MapWrapper 只是一个包含对Map的引用的类。
这两种方法的优缺点是什么?

szqfcxe2

szqfcxe21#

我认为使用 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;
}

你知道你需要 aa 以及 bb 调用api。

falq053o

falq053o2#

你总是追求“简约”的API。
在这种情况下:当您的api在传递一个Map时工作时,那么您当然选择了该路径。为什么要让你的客户先把Map包起来?!
方案1的优点是——这是一条直截了当的道路。
而选项2的缺点是使用api更加困难。
换句话说:如果该参数的中心“属性”是“to be a map”,那么它应该作为map传递。但是,当“中心主题”是不同的东西时,你就传递了一些与另一个主题相关的东西。

相关问题