我在为数据库应用程序命名方法时遇到问题。
在我的Database
实例中,我有一个可以从数据库中删除Agreement
对象的方法。但是,我希望能够一次删除多个Agreement
,以便能够使用事务。问题是我也有一个重载来删除一个Agreement
对象。
基本上,我的结构是这样的:
public class Database
{
// ...
public void RemoveAgreement(Agreement a)
{
// ...
}
public void RemoveAgreement(IEnumerable<Agreement> agreements)
{
// ...
}
}
但这可能令人困惑,因为Agreement
列表的重载具有单数名称,尽管本身就是复数。
我的问题是,我应该如何构建这个?我应该有两个名为RemoveAgreement()
或RemoveAgreements()
的重载吗?或者我应该使用两种不同的方法,而不是重载?
感谢。
答案 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);
}
}