单个对象参数的奇异方法名称,列表的复数?

时间:2010-04-25 03:39:47

标签: c# .net

我在为数据库应用程序命名方法时遇到问题。

在我的Database实例中,我有一个可以从数据库中删除Agreement对象的方法。但是,我希望能够一次删除多个Agreement,以便能够使用事务。问题是我也有一个重载来删除一个Agreement对象。

基本上,我的结构是这样的:

public class Database
{
    // ...

    public void RemoveAgreement(Agreement a)
    {
        // ...
    }

    public void RemoveAgreement(IEnumerable<Agreement> agreements)
    {
        // ...
    }
}

但这可能令人困惑,因为Agreement列表的重载具有单数名称,尽管本身就是复数。

我的问题是,我应该如何构建这个?我应该有两个名为RemoveAgreement()RemoveAgreements()的重载吗?或者我应该使用两种不同的方法,而不是重载?

感谢。

3 个答案:

答案 0 :(得分:6)

我会说,对于接收列表作为参数的方法,由于您描述的原因,名称RemoveAgreement不正确。

我称之为RemoveAgreements

对于您的班级名称(数据库),我会说您将其用作所有实体的DAO。

如果您仅将此类用于协议实体,我将使用此2种方法

public void Remove(Agreement agreement)

public void Remove(IEnumerable<Agreement> agreements)

答案 1 :(得分:0)

我建议使用单独的名称,并对需要params Agreement[]的复数版本进行重载。

答案 2 :(得分:0)

以下是我在那种情况下会做的事情:

public void RemoveAgreement (Agreement agreement)
{
    // Do Stuff
}

public void RemoveAgreements (IEnumerable<Agreement> agreements)
{
    foreach (Agreement a in agreements)
    {
        RemoveAgreement(a);
    }
}