大家在设计接口的时候,传参一般是传逻辑上需要的最小范围还是直接传对象?

2016-03-16 14:01:54 +08:00
 shawncx

比如有个方法 getMembersFromGroup ,我可以设计它只接受需要的最小范围参数。比如. 只接受 groupId, getMemberFromGroup(domian, path, groupId)。我也可以设计他接受 Group 对象,比如 getMemberFromGroup(group)。第一种设计可以明确需要的参数,也方便调用。但是不方便扩展,当需要的参数的多的时候会很乱。第二种更面向对象,但是如果我要复用方法时,无法获得整个对象,不通过查看接口实现就无法了解该如何构造。对于这种问题大家是怎么看的?

4192 次点击
所在节点    程序员
24 条回复
hardware
2016-03-17 00:42:36 +08:00
**kwargs
lecher
2016-03-17 02:07:46 +08:00
一个接口七八个参数的时候,会很头疼,新增业务根本不敢随便改动接口参数,有时候为了新增的一两个参数就要另起新的接口做类似的业务处理。

封装对象对接口调用隐匿了参数细节,内部实现各种判空校验处理做模型转换同样很头疼,有时候不看实现不知道如何传参调用。

我习惯传对象,调用和新增业务各种省事,但是接口内部处理像一团乱麻。对外暴露的接口数量会比较少。变更数据模型的改动量小一些。

团队开发规范是参数列表,一个接口加加加就变成五六个参数,内部实现一个接口只做一件事情,需要对外暴露很多个业务相近的接口,调整数据字段的时候经常面临七八个接口的改动。
yuriko
2016-03-17 09:56:29 +08:00
数据多时,通过构造器生成参数包,尽可能不使用原对象
Lpl
2016-03-17 11:51:50 +08:00
应该是 java 的 controller 层吧(用的 springmvc)?

我们的开发规则是:当参数在四个以上时需要考虑封装成一个 formbean 对象。不然的话参数太多,代码太长

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/263921

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX