编码实践 - 我应该使用哪种编码方法?

时间:2011-12-20 09:22:07

标签: java coding-style

很抱歉这个模糊的标题。没想到好的。

情况:

  1. 拥有用户对象列表。
  2. 需要为UserInfo对象创建数组。
  3. 创建的UserInfo对象基于User对象中的信息。 (目前有一种方法)
  4. 在这种情况下哪个更好?

    1. 我应该将用户的整个列表传递给UserInfo转换方法。
    2. 或者我应该遍历User列表并将每个用户对象传递给转换方法并获取UserInfo。
    3. 示例:

      List<User> users = .....;
      UserInfo[] userInfos = getUserInfoFromUser(users); //(conversion method will loop and generate array, then return it.)
      

      List<User> users = .....;
      UserInfo[] userInfos = new UserInfo[users.size()]
      for (int j = 0; j < users.size(); j++) {
          userInfos[j] = getUserInfoFromUser(users.get(j));
      }
      

      在第一种方法中,我们传递一个大对象(User列表)作为参数,然后我们多次调用相同的方法。哪个更好?

      用户列表的大小范围为25-200个对象。

6 个答案:

答案 0 :(得分:5)

如何使用两个转换方法,一个采用User并返回UserInfo的方法(这可能也可能应该是UserInfo的构造函数)和一个接受List的,循环并在内部调用第一个?

列表的大小无关紧要。

答案 1 :(得分:2)

我认为这取决于您执行此操作的频率,因为您不希望在代码中的多个位置重复相同的循环。

我建议创建两个方法,一个返回单个用户的信息,另一个返回用户列表的信息:

public UserInfo[] getInfoForUsers(List<User> users) {
    UserInfo[] userInfos = new UserInfo[users.size()];
    for (int j = 0; j < users.size(); j++) {
        userInfos[j] = getInfoForUser(users.get(j));
    }
    return userInfos;
}

public UserInfo getInfoForUser(User u) {

}

答案 2 :(得分:0)

我更喜欢第一种方法,因为它很简单,参数也是users对象的地址。所以在这种情况下无论大小都无关紧要。

答案 3 :(得分:0)

在这两种情况下,Java都会传递对象的引用。在第一种情况下,它是对用户集合的引用,在第二种情况下是对用户的引用。

答案 4 :(得分:0)

我建议使用第一个选项:传递整个数组!

减少函数调用次数肯定会付出代价。

答案 5 :(得分:0)

没有区别:在第一个版本中,函数实现将执行第二个版本。此外,可能想要一个功能User - &gt;的UserInfo。