在工作中,我被要求修复一个涉及我对类进行更改的错误。为了修复这个错误,我需要添加一个类的集合,如下所示:
public class Branch
{
public int StartNode { get; set; }
public int EndNode { get; set; }
}
集合List<Branch> _vistedBranch = new List<Branch>();
我担心的是我总是被教导讨厌看到"新的"。在我的任何一门课上,因为它把我的课和其他课紧密地结合在一起。然而,这个类只是一个POCO类,没有任何功能。我只是在我正在处理的类中使用它来存储开始节点和结束节点的集合。
这是我在
类中使用它的方式public class CustomerCountRequestProcessor : ICustomerCountRequestProcessor
{
List<Branch> _vistedBranch = new List<Branch>();
private INetwork _network;
public CustomerCountRequestProcessor(INetwork network)
{
_network = network ??
throw new ArgumentNullException(nameof(network));
}
public int GetCustomersForSelectedNode(IRoot request)
{
if (request == null)
throw new ArgumentNullException(nameof(request));
_network = request.Network;
return ProcessSelectedNode(request.SelectedNode);
}
private int ProcessSelectedNode(int node)
{
var nc = _network.Customers.FirstOrDefault(c => c.Node == node);
var customersForNode = nc != null ? nc.NumberOfCustomers : 0;
foreach (var subNode in _network.Branches.Where(b => b.StartNode == node))
{
bool has = _vistedBranch.Any(b => b.StartNode == subNode.StartNode
&& b.EndNode == subNode.EndNode);
if (has)
{ throw new ArgumentNullException(nameof(node)); }
_vistedBranch.Add(new Branch()
{
StartNode = subNode.StartNode,
EndNode = subNode.EndNode
});
customersForNode += ProcessSelectedNode(subNode.EndNode);
}
return customersForNode;
}
}
所以我的问题很简单,我如何重构这个集合使我的代码更干净。
- 我要从集合中创建一个类吗?然后从类中创建一个接口,然后使用依赖注入将其引入?2.我是否要创建一个工厂类,把集合放在那里,然后在需要这个类的时候新建这个工厂?上面的这些选项对于一个简单的POCO类来说似乎是大量的代码。也许就像这样把新的部分放入构造函数一样简单。
List<Branch> _vistedBranch;
private INetwork _network;
public CustomerCountRequestProcessor(INetwork network)
{
_vistedBranch = new List<Branch>();
_network = network ??
throw new ArgumentNullException(nameof(network));
}
我该怎么做?
选择1。构造函数也很好