我正在处理遗留代码,我经常看到方法调用具有来自同一对象的多个属性传递给方法:
update(user.getID(), user.getLanguage() etc...)
Run Code Online (Sandbox Code Playgroud)
这样做是否有明显的优点或缺点,或者我也可以传递用户对象(在这种情况下)并处理方法中的属性?
跟进:
很多优秀的答案,谢谢.对于问题中缺乏确切细节的道歉,但正如我所说的那样,我正在研究整个系统,这似乎是一个很好的简单例子.请随意将此问题转变为社区维基问题,因为没有人可以接受其他答案,因为他们都很好并且有正确的分数.
use*_*434 15
两者都有其优点.我决定每种方法取决于它应该做什么.但是对于遗留代码,我宁愿不改变任何东西,除非实际存在问题.
Pro几个值,con对象参考:
Pro传递单个用户对象:
如您所见,根据您的需求,可以将物业视为优势或劣势.
Mic*_*rdt 13
事实上,这将是太多,太多更好的引用传递的对象,原因有二:
为避免过长的参数列表,建议的重构是创建一个包含所有数据的对象 - 您是否已经拥有这样的对象并不幸运?
这取决于您是否接受来自调用方法的对象类的依赖性.
使用时
update(user)
Run Code Online (Sandbox Code Playgroud)
声明更新的类必须知道用户的类.
如果你使用这个
update(user.getID(), user.getLanguage() etc...)
Run Code Online (Sandbox Code Playgroud)
并且成员是原始的或属于Java标准库,而update()对用户类没有进一步的依赖...
很难从代码片段中说出你的方法更新了什么。但是,如果您传入用户对象,则将用户对象耦合到该方法。如果您只传递字符串、整数等,则可以将该方法与用户以外的源一起使用。我的建议是,您不应该强迫方法变得比需要的更具体。