【发布时间】:2010-11-30 21:38:40
【问题描述】:
当您需要在一个方法中返回两个东西时,最好的方法是什么?
我理解一个方法应该只做一件事的理念,但是假设你有一个运行数据库选择的方法,你需要拉两列。我假设您只想遍历数据库结果集一次,但您想返回两列数据。
我想出的选项:
- 使用全局变量来保存回报。 我个人尽量避免使用全局变量。
- 传入两个空变量作为参数,然后在方法内部分配变量,这现在是一个 void。 我不喜欢有副作用的方法的想法。
- 返回一个包含两个变量的集合。 这会导致代码混乱。
- 构建一个容器类来保存双重返回。 这比包含其他集合的集合更具自记录性,但似乎仅仅为了以下目的而创建一个类可能会令人困惑一个回报。
【问题讨论】:
-
哪种哲学说你不应该返回两个变量?职责分离(方法应该只做一件事)并不意味着方法不能返回两个或更多变量。也许一件事是由几个部分组成的。例如状态编号和状态消息。
-
这与语言无关。答案取决于语言的特性(元组、引用传递、输出参数)。
-
@Dan,看我对stackoverflow.com/questions/1468375/…的评论。
-
@tharkun,这是一个很好的观点。
-
处理这种情况的正确方法似乎很主观。所以我不会标记答案。
标签: language-agnostic return-value