保持创建和更新方法分开还是一起使用?

时间:2018-07-23 15:57:26

标签: c#

标题比较模糊,我不确定该如何工作。

在开发方面,我正在尝试提高我的专业素养,但我不确定如何在我的一个班级中构建流程。

我正在建立一个产品库存系统,其中包含有关产品的各种详细信息,即名称,尺寸,数量和成本。

我有一个类InventorySystem,该类对ProductDatabase进行了调用,这是第二个将存储我所有CRUD功能的类。

InventorySystem具有方法CreateProduct()UpdateProduct(),它们将根据需要调用数据库以执行CRUD方法。我的问题是在数据库类中,我不知道是将这些方法分开还是首先使用辅助方法productExists()首先检查表中是否存在该产品。

我的意思是,以下哪一项是最佳实践。

public int decideAction(Product p)
        {
            bool productExists = productExistsInMap(p);

            if(productExists)
            {
                UpdateProduct(p);
            }
            else
            {
                AddProduct(p);
            }
        }

在此方法中,productExistsInMap()方法用于确定传递的对象在地图中是否已经存在,如果存在,则更新现有产品条目,如果不存在,则将其添加到地图中。

public int AddProduct(Product p)
{
    string productName = p.ProductName;

    if(productMap.ContainsKey(productName))
    {
        return "item already exists in map";
    }
    else
    {
        productMap.Add(productName, p);
        return 2;
    }
}

在此方法中,不使用productExistsInMap()方法,而是在方法本身内检查映射是否存在现有条目。如果产品已经存在,则不会执行任何更新,因为将存在单独的updateProduct方法。

本质上的区别在于,是否应该有一个方法确定是否要添加或更新地图,然后调用适当的方法,对两个单独的执行添加和更新的方法进行处理,这些方法由{{1 }}类。

1 个答案:

答案 0 :(得分:0)

这完全取决于恕我直言。有时,您需要明确地将它们分开(您不总是要更新现有项目,也不总是要插入缺失的项目)。哎呀,您可能有用于Insert(),Update()和Upsert()的方法,这些方法通常被称为并根据存在情况进行插入或更新。

但是,您似乎在谈论在本地执行“ Upsert”操作,检查其在本地还是远程?如果您要:

  • 检查后端是否存在
  • 插入或更新

这将引发并发问题。您应该同时进行检查并自动在后端中插入或更新。