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

Java 编码实践-我应该使用哪种编码方法?,java,coding-style,Java,Coding Style,抱歉,标题这么模糊。没有想到好的 情况: 有一个用户对象列表 需要为UserInfo对象创建数组 用户信息对象是基于用户对象中的信息创建的。(目前有一种方法) 在这种情况下,哪一个更好 我应该传递整个用户对用户到用户信息转换方法列表吗 或者我应该在用户列表上循环,并将每个用户对象传递给转换方法,并获取其用户信息 示例: List<User> users = .....; UserInfo[] userInfos = getUserInfoFromUser(users); //(con

抱歉,标题这么模糊。没有想到好的

情况:

  • 有一个用户对象列表
  • 需要为UserInfo对象创建数组
  • 用户信息对象是基于用户对象中的信息创建的。(目前有一种方法)
  • 在这种情况下,哪一个更好

  • 我应该传递整个用户对用户到用户信息转换方法列表吗
  • 或者我应该在用户列表上循环,并将每个用户对象传递给转换方法,并获取其用户信息
  • 示例:

    List<User> users = .....;
    UserInfo[] userInfos = getUserInfoFromUser(users); //(conversion method will loop and generate array, then return it.)
    
    列出用户=。。。。。;
    UserInfo[]userInfos=getUserInfoFromUser(用户)//(转换方法将循环并生成数组,然后返回它。)
    

    列出用户=。。。。。;
    UserInfo[]userInfos=newuserinfo[users.size()]
    对于(int j=0;j
    在第一种方法中,我们将一个大对象(用户列表)作为参数传递,在第二种方法中,我们多次调用同一个方法。哪个更好


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

    我更喜欢第一种方法,因为它很简单,而且参数将是
    用户
    对象的地址。因此,在这种情况下,大小并不重要。

    有两种转换方法,一种是接受
    用户
    并返回
    用户信息
    (这可能是也可能应该是
    用户信息
    的构造函数),另一种是接受列表的转换方法,循环和内部调用第一种方法吗


    列表的大小不相关。

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

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


    减少函数调用的数量肯定是值得的。

    没有区别:在第一个版本中,函数实现将执行第二个版本。此外,您可能希望有一个函数User->UserInfo。

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

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

    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) {
    
    }
    
    public UserInfo[]getInfoForUsers(列出用户){
    UserInfo[]userInfos=newuserinfo[users.size()];
    对于(int j=0;j
    在第一个版本中,userInfos=getUserInfosFromUsers(users)without.get(j)我同意-列表方法现在使用更方便,减少了膨胀,但是单用户方法更模块化,如果您的需求发生变化或扩展,它将更易于重用。
    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) {
    
    }