Singular method name for single object argument, plural for a list?
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 Agreement
s 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 Agreement
s 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 shoul开发者_如何学编程d I use two separate methods, instead of overloads?
Thanks.
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)
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);
}
}
I recommend using separate names, and making an overload of the plural version that takes a params Agreement[]
.
精彩评论