tags:

views:

42

answers:

3

I'm having a problem with naming a method for a database application.

In my Database instance, I have a method that can remove an Agreement object from the database. However, I want to be able to remove multiple Agreements at once, to be able to use transactions. The problem is that I also have an overload to remove a single Agreement object.

Essentially, my structure is like this:

public class Database
{
    // ...

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

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

But this can be confusing, as the overload with the list of Agreements has a singular name, despite being inherently plural.

My question is, how should I structure this? Should I have two overloads with the name RemoveAgreement(), or RemoveAgreements()? Or should I use two separate methods, instead of overloads?

Thanks.

A: 

I recommend using separate names, and making an overload of the plural version that takes a params Agreement[].

SLaks
+3  A: 

I'd say that for the method that receives the list as parameter the name RemoveAgreement is not correct for the reason you describe.

I would call it RemoveAgreements

For the name of your class (Database) I would say that you're using it as DAO for ALL your entities.

If you were using this class ONLY for Agreement entities I would have this 2 methods

public void Remove(Agreement agreement)

and

public void Remove(IEnumerable<Agreement> agreements)

Claudio Redi
Yeah, it's a fairly small application, it just tracks three types of objects, so I figured it would be less complicated to just use a single DAO.
nasufara
A: 

Here's what I would do in that situation:

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

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