2014-12-05 64 views
0

使用名稱/標識或傳遞實際對象來刪除對象會更有意義嗎?例如:設計 - 刪除名稱或對象?

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

我已經使用了兩者,但我無法真正看到優點與缺點。有一個首選標準嗎?

編輯:這可能是一個更好的例子提供我想要做的事:

比方說,我有一個交易的集合賬戶類。我最好傳遞交易對象還是Tranaction的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#代碼...

+0

如果你想模仿標準庫,你會使用迭代器。 – user657267 2014-12-05 03:31:38

+0

在c#中怎麼樣? – keelerjr12 2014-12-05 03:32:26

+0

提供了一個方法,通過名稱搜索不是很通用的,尤其是如果您的列表類是在哪裏的對象可能沒有名字的元素類型模板。 – 0x499602D2 2014-12-05 03:33:37

回答

0

您可能沒有該項目的參考始終。所以最好通過名稱或ID刪除方法。 根據您的業務需求,您可以決定哪一個更可取(名稱或ID)。名稱或ID必須是唯一的,否則它會刪除錯誤的項目。所以業務需求必須決定它。

+0

你可以使用一個查找(GUID ID)函數來獲得實際的對象,然後傳遞...... – keelerjr12 2014-12-05 04:18:23

+0

但它容易用戶級呼叫方法Remove(GUID ID),而找到項目,然後將其刪除。 – 2014-12-05 04:22:17