何处执行迭代的最佳实践

时间:2013-12-13 20:51:25

标签: java language-agnostic

我在工作中遇到了以下代码,它在我的脑海中提出了一个问题。

\\Option 1
public class MyObjectRegistry 
{
    private MyObjectMapper mapper = new MyObjectMapper();
    public void StoreMyObjects (List<MyObject> myObjectList) 
    {
        mapper.StoreMyObjects(myObjectList); 
    }
}

public class MyObjectMapper
{
    public void StoreMyObjects(List<MyObject> myObjectList)
    {
        for (MyObject myObj : myObjectList)
        {
            //Store Object In Database
        }
    }
}

vs

\\Option 2
public class MyObjectRegistry 
{
    private MyObjectMapper mapper = new MyObjectMapper();
    public void StoreMyObjects (List<MyObject> myObjectList) 
    {
        for (MyObject myObj : myObjectList)
        {
            mapper.StoreMyObject(myObj); 
        }
    }
}

public class MyObjectMapper
{
    public void StoreMyObject(MyObject myObject)
    {
            //Store Object In Database
    }
}

选项1目前是代码库中的内容。我的问题是:这些方法中的一种比另一种更好吗?关于迭代应该发生的地方,是否存在关于此类情况的任何约定或最佳实践?

2 个答案:

答案 0 :(得分:0)

现在的方式,在方法签名中使用List,绝对应该是首选,因为插入批处理时数据库插入的性能要好得多。使用第二个示例中设计的代码,批处理将非常难以实现,这意味着它可能不会实现。

答案 1 :(得分:0)

第一个应该是首选。由于涉及抽象,第二个示例继续调用外部方法,该方法比第一个方法要求更多资源。较低级别可以让您的迭代更好。