我在工作中遇到了以下代码,它在我的脑海中提出了一个问题。
\\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目前是代码库中的内容。我的问题是:这些方法中的一种比另一种更好吗?关于迭代应该发生的地方,是否存在关于此类情况的任何约定或最佳实践?
答案 0 :(得分:0)
现在的方式,在方法签名中使用List,绝对应该是首选,因为插入批处理时数据库插入的性能要好得多。使用第二个示例中设计的代码,批处理将非常难以实现,这意味着它可能不会实现。
答案 1 :(得分:0)
第一个应该是首选。由于涉及抽象,第二个示例继续调用外部方法,该方法比第一个方法要求更多资源。较低级别可以让您的迭代更好。