zoukankan      html  css  js  c++  java
  • 代码重构~封装成员变量

    返回目录

    封装成员变量(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的值。

    返回目录

  • 相关阅读:
    HTCVive摄像头的一些好玩的现象
    AI之A*算法
    C#预处理器指令之#define/#undefine/#if/#elif/#else/#endif
    AI之有限状态机
    Unity之动态加载场景资源
    Canvas
    DFGUI之界面文字显示异常
    Unity Application
    AI:确定性AI
    php正则表达式
  • 原文地址:https://www.cnblogs.com/lori/p/2609319.html
Copyright © 2011-2022 走看看