zoukankan      html  css  js  c++  java
  • 重构指南

    封装就是将相关的方法或者属性抽象成为一个对象。
    封装的意义:
    1. 对外隐藏内部实现,接口不变,内部实现自由修改。
    2. 只返回需要的数据和方法。
    3. 提供一种方式防止数据被修改。
    4. 更好的代码复用。
     
    当代码中包含许多条件判断,为了改善代码的可读性和可维护性,我们可以将条件封装。
    有两种封装方式:
    一、无参数的条件判断,封装为属性
     
    重构前代码
    public class RemoteControl
        {
            private string[] Functions { get; set; }
            private string Name { get; set; }
            private int CreatedYear { get; set; }
    
            public string PerformCoolFunction(string buttonPressed)
            {
                // Determine if we are controlling some extra function
                // that requires special conditions
                if (Functions.Length > 1 && Name == "RCA" && CreatedYear > DateTime.Now.Year - 2)
                    return "doSomething";
            }
        }

    重构后代码

    public class RemoteControl
        {
            private string[] Functions { get; set; }
            private string Name { get; set; }
            private int CreatedYear { get; set; }
    
            private bool HasExtraFunctions
            {
                get { return Functions.Length > 1 && Name == "RCA" && CreatedYear > DateTime.Now.Year - 2; }
            }
    
            public string PerformCoolFunction(string buttonPressed)
            {
                // Determine if we are controlling some extra function
                // that requires special conditions
                if (HasExtraFunctions)
                    return "doSomething";
            }
        }
    二、有参数的条件判断,封装为方法
     
    重构前代码
     public class RemoteControl
        {
            private string[] Functions { get; set; }
            private int CreatedYear { get; set; }
    
            public string PerformCoolFunction(string buttonPressed)
            {
                // Determine if we are controlling some extra function
                // that requires special conditions
                if (Functions.Length > 1 && buttonPressed== "RCA" && CreatedYear > DateTime.Now.Year - 2)
                    return "doSomething";
            }
        }

    重构后代码

     public class RemoteControl
        {
            private string[] Functions { get; set; }
            private string Name { get; set; }
            private int CreatedYear { get; set; }
    
            private bool HasExtraFunctions(string buttonPressed)
            {
                get { return Functions.Length > 1 && buttonPressed== "RCA" && CreatedYear > DateTime.Now.Year - 2; }
            }
    
            public string PerformCoolFunction(string buttonPressed)
            {
                // Determine if we are controlling some extra function
                // that requires special conditions
                if (HasExtraFunctions(buttonPressed))
                    return "doSomething";
            }
        }
  • 相关阅读:
    摹客 · Veer 第二届设计大赛邀你来战!
    企业官网原型制作分享-Starbucks
    12个最佳的响应式网页设计教程,轻松带你入门!
    摹客第二届设计大赛即将开幕——摹客,为设计喝彩!
    想入坑互联网产品经理,该如何从零做起?
    概率DP
    高斯消元
    树形DP

    01背包
  • 原文地址:https://www.cnblogs.com/hmloo/p/6292441.html
Copyright © 2011-2022 走看看