设计 -- 按名称或对象删除

本文关键字:对象 删除 设计 | 更新日期: 2023-09-27 18:33:20

使用对象的名称/ID删除对象或传递实际对象是否更有意义? 例如:

void MyList::remove(MyObject &myObject) { /* blah */ }
// or
void MyList::remove(std::string id) { /* blah */ }

我两者都用过,但我真的看不出有什么优点和缺点。 有首选标准吗?

编辑:这可能是一个更好的例子,提供我正在尝试做的事情:

假设我有一个包含事务集合的 Account 类。 我传递交易对象还是交易的 ID 更好?

class Account
{
  private List<Transaction> transaction = new List<Transaction>();
  public void Remove(Transaction transaction) { }
  // OR
  public void Remove(string name) { }
  // OR
  public void Remove(Guid id) { }
}

注意:此问题包含C++和 C# 代码...

设计 -- 按名称或对象删除

您可能并不总是具有项目引用。因此,最好按名称或 id 删除方法。您可以根据您的业务需求决定哪一个更可取(名称或 ID)。名称或 ID 必须是唯一的,否则它将删除错误的项目。因此,必须由业务需求来决定。