标题比较模糊,我不确定该如何工作。
在开发方面,我正在尝试提高我的专业素养,但我不确定如何在我的一个班级中构建流程。
我正在建立一个产品库存系统,其中包含有关产品的各种详细信息,即名称,尺寸,数量和成本。
我有一个类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 }}类。
答案 0 :(得分:0)
这完全取决于恕我直言。有时,您需要明确地将它们分开(您不总是要更新现有项目,也不总是要插入缺失的项目)。哎呀,您可能有用于Insert(),Update()和Upsert()的方法,这些方法通常被称为并根据存在情况进行插入或更新。
但是,您似乎在谈论在本地执行“ Upsert”操作,检查其在本地还是远程?如果您要:
这将引发并发问题。您应该同时进行检查并自动在后端中插入或更新。