重构:Encapsulate Collection
重构:Encapsulate Collection
重构是持续改进代码的基础。重构将使我们对单元测试、共享代码以及更可靠的无bug 的代码这些最佳实践得到提高。
Encapsulate Collection条件:当集合的add/remove操作中包含其他的相关逻辑时,以可迭代但不直接在集合上进行操作的方式来向类的使用者隐藏类中的完整集合。
如下所示:

public class UsingObject
{
private int _Id;
private string _name;
public int Id
{
get { return _Id; }
set { _Id = value; }
}
public string Name
{
get { return _name; }
set { _name = value; }
}
}
{
private int _Id;
private string _name;
public int Id
{
get { return _Id; }
set { _Id = value; }
}
public string Name
{
get { return _name; }
set { _name = value; }
}
}
当另外一个控制该对象集合的类中,对集合的操作有条件限制时,采用封装集合重构有更好的可扩展性。

public class EncapsulateCollectionClass
{
private System.Collections.Hashtable _hasntable=new System.Collections.Hashtable();
private int _min;
private int _max;
public EncapsulateCollectionClass( )
{
}
public int Min
{
get { return _min; }
set { _min = value; }
}
public int Max
{
get { return _max; }
set { _max = value; }
}
public System.Collections.Hashtable UsingObjects
{
get { return _hasntable; }
}
public void Add(UsingObject obj)
{
if (obj.Id > Min&&obj.Id<Max)
{
if (!_hasntable.Contains(obj.Id))
{
_hasntable.Add(obj.Id, obj.Name);
}
}
}
public void Remove(UsingObject obj)
{
if (obj.Id > Min && obj.Id < Max)
{
if (_hasntable.Contains(obj.Id))
{
_hasntable.Remove(obj.Id);
}
}
}
{
private System.Collections.Hashtable _hasntable=new System.Collections.Hashtable();
private int _min;
private int _max;
public EncapsulateCollectionClass( )
{
}
public int Min
{
get { return _min; }
set { _min = value; }
}
public int Max
{
get { return _max; }
set { _max = value; }
}
public System.Collections.Hashtable UsingObjects
{
get { return _hasntable; }
}
public void Add(UsingObject obj)
{
if (obj.Id > Min&&obj.Id<Max)
{
if (!_hasntable.Contains(obj.Id))
{
_hasntable.Add(obj.Id, obj.Name);
}
}
}
public void Remove(UsingObject obj)
{
if (obj.Id > Min && obj.Id < Max)
{
if (_hasntable.Contains(obj.Id))
{
_hasntable.Remove(obj.Id);
}
}
}
如上黄线标注所示,条件---->集合的add/remove操作中包含其他的相关逻辑。
效果--->不直接在集合上进行操作的方式来向类的使用者隐藏类中的完整集合。
分类:
[25] Refactory
标签:
Refactory
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架