代码重构~封装成员变量

封装成员变量(Encapsulate Field) — 将仅限于本类使用的变量重写成私有(private)成员变量,并提供访问方法(accessor method)。这种重构方式可以将与外部调用者无关的变量隐藏起来,减少代码的耦合性,并减少意外出错的概率。

看图所示:

 1     /// <summary>

 2     /// 验证实体类

 3     /// </summary>

 4     public class RuleViolation

 5     {

 6         /// <summary>

 7         /// 验证指向的错误信息

 8         /// </summary>

 9         public string ErrorMessage { get; private set; }

10         /// <summary>

11         /// 验证指向的属性名

12         /// </summary>

13         public string PropertyName { get; private set; }

14 

15         public RuleViolation(string errorMessage)

16         {

17             ErrorMessage = errorMessage;

18         }

19 

20         public RuleViolation(string errorMessage, string propertyName)

21         {

22             ErrorMessage = errorMessage;

23             PropertyName = propertyName;

24         }

25     }

以上的代码是一种特殊的封装成员变量的方式,它使用了.net3.5的get;set;特性,不需要重新定义额外的变量,显得程序代码更简洁,层次更清晰。

下面代码是一种典型的封装成员变量的方式

不规范的代码:

    public abstract class Singleton<TEntity> where TEntity : class

     {

       public TEntity Instance=...;

 }

使用封装成员变量进行代码重构之后:

    public abstract class Singleton<TEntity> where TEntity : class

     {

        private Lazy<TEntity> _instance=...;



         public TEntity Instance

         {

             get { return _instance.Value; }

         }


}

其中代码中的_instance对外是“隐藏”的,而外界可以通过Instance这个只读的属性去访问这个_instance的值。

 

你可能感兴趣的:(成员变量)