首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码重构过程

代码重构过程
EN

Stack Overflow用户
提问于 2015-07-16 15:46:02
回答 1查看 47关注 0票数 1

上下文:,目前我正在进行spring + hibernate源代码的重构过程。在以下场景中,我有一个与最可取的方法相关的查询。

问题:当将值从Controller类传递到服务接口时,作为不同的参数或类对象传递值,哪个更好?在内存、可重用性等方面

示例:

代码语言:javascript
复制
myservice.getUser(login,password,....)

代码语言:javascript
复制
myservice.getUser(userObj)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-16 16:11:42

IMHO每种方法都有权衡,但我通常尝试使用模型对象(= 'User','Product‘.从人类的角度来看,这是有意义的)。我能想到的权衡点:

1)内存和垃圾收集:“User”对象稍微昂贵一些,需要在堆上分配,但它不应该成为大多数it应用程序的瓶颈。此外,GC还擅长处理这种短暂的对象。

2)“用户”有利于未来的扩展和可读性:如果您需要更多的用户详细信息(帐户、居住国.)如果有一个封装的用户是很好的,否则您的服务签名将成为噩梦.

3)多态性:如果你封装成“用户”,可能会有不同的用户类型。( "FreeUser","VIPUser"),只要它们都提供'user.isEntitledForDiscount()‘,您的服务就不关心它的确切类型。

4)对于部分填充的对象,我有一个严重的两难处境。也就是说,如果我有一个具有许多属性(电子邮件、就业历史……)的“用户”模型,但是有些服务只需要其中的分数(例如,‘登录’只需要username+password)。如果我使用的是部分填充的用户--这会使我的代码的未来维护人员感到困惑。所以我要么使用专用的LoginDetails对象,要么使用扁平的params: login(用户,密码)。除了移动到node.js之外,我没有任何神奇的解决方案;)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31458867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档