创建静态类以编写单元测试。我不确定是使用静态属性还是静态方法。
请参阅下面的代码并告诉我。
1)MailParterDummies(具有静态属性的那个)
public static class MailPartnerDummies
{
public static IEnumerable<MailingPartner> MailingPartners
{
get
{
int index = 0;
IList<MailingPartner> mailingPartners = new List<MailingPartner>();
for (int i = 0; i < _text.Count(); i++)
{
var mailingPartner = new MailingPartner();
index = index > _text.Count() ? 0 : index;
mailingPartner.MailingPartnerID = i + 1;
mailingPartner.ContactName = _text[index];
mailingPartner.OrganisationName = _text[index];
mailingPartner.FullAddress = _text[index];
mailingPartner.Town = _text[index];
mailingPartner.County = _text[index];
mailingPartner.Country = _text[index];
mailingPartner.PostalZipCode = _text[index];
mailingPartner.TelephoneNumber = i + 1;
mailingPartner.EmailAddress = _text[index];
mailingPartner.WebsiteAddress = _text[index];
mailingPartner.AddedOn = DateTime.Now;
mailingPartner.AddedBy = _text[index];
mailingPartner.UpdatedOn = DateTime.Now;
mailingPartner.UpdatedBy = _text[index];
mailingPartners.Add(mailingPartner);
index ++;
}
return mailingPartners;
}
}
#region fake variables
private readonly static string[] _text = { "Test1", "Test2", "Test3" };
#endregion
}
2)MailParterDummies(静态方法)
public static class MailPartnerDummies
{
public static IEnumerable<MailingPartner> MailingPartnerList()
{
int index = 0;
IList<MailingPartner> mailingPartners = new List<MailingPartner>();
for (int i = 0; i < _text.Count(); i++)
{
var mailingPartner = new MailingPartner();
index = index > _text.Count() ? 0 : index;
mailingPartner.MailingPartnerID = i + 1;
mailingPartner.ContactName = _text[index];
mailingPartner.OrganisationName = _text[index];
mailingPartner.FullAddress = _text[index];
mailingPartner.Town = _text[index];
mailingPartner.County = _text[index];
mailingPartner.Country = _text[index];
mailingPartner.PostalZipCode = _text[index];
mailingPartner.TelephoneNumber = i + 1;
mailingPartner.EmailAddress = _text[index];
mailingPartner.WebsiteAddress = _text[index];
mailingPartner.AddedOn = DateTime.Now;
mailingPartner.AddedBy = _text[index];
mailingPartner.UpdatedOn = DateTime.Now;
mailingPartner.UpdatedBy = _text[index];
mailingPartners.Add(mailingPartner);
index++;
}
return mailingPartners;
}
#region fake variables
private readonly static string[] _text = { "Test1", "Test2", "Test3" };
#endregion
}
我要用1)还是2)? 感谢。
答案 0 :(得分:1)
使用方法。
根据微软的Rico Mariani的说法,除了返回请求的值之外,属性不应该做任何其他事情。如果您需要进行任何数据处理,请使用方法。
通过执行此操作,您可以清楚地与调用代码进行通信,并且可以在引擎盖下完成一些工作。
查看Rico的文章:Performance Guidelines for Properties
引用:
所以,你正在使用一个属性,最重要的是要记住 它看起来非常像一个领域。它看起来像一个 田野和感觉就像一个领域,人们会期望它表现得像一个 领域。所以记住这一点:
访问该属性不应分配任何内存;人们会在循环中使用这个东西走过任何数据结构 你正在展示,他们希望这些数据能够存在 被访问。
访问该属性不应该“同步” - 如果要进行任何锁定,则应该在比单个更高的级别完成 当你获得任何拥有该财产的物品时,该字段 它,读它应该是安全的。
访问该属性不应该执行任何I / O,尤其是在您阅读该属性时,再次看到上面的任何网络I / O. 提供它的对象应该做任何需要的I / O.
访问属性不应该是复杂度大于O(1)的操作 - 这意味着没有循环。完全没有。你可以讨价还价 如果我们谈论的是一个属性,那就高达O(lg(N)) “索引器”但不高。 访问该属性不应该有副作用(即它严格地是一个读取操作,它什么都不改变)
你剩下的就是你可以使用你的对象状态和 参数(如果是索引器)进行常量时间查找或日志时间 最糟糕的是,在已有的数据结构中并立即返回 结果。就是这样。