zoukankan      html  css  js  c++  java
  • 为布尔方法命名

    概念:本文中的”为布尔方法命名”是指假设一个方法带有大量的bool 參数时,能够依据bool 參数的数量。提取出若干个独立的方法来简化參数。

     

    正文:我们如今要说的重构并非普通字面意义上的重构,它有非常多值得讨论的地方。当一个方法带有大量的bool 參数时。会导致方法非常easy被误解并产生非预期的行为。

    依据布尔型參数的数量,我们能够决定提取出若干个独立的方法来。详细代码例如以下:

     

    using LosTechies.DaysOfRefactoring.BreakResponsibilities.After;
    
    namespace LosTechies.DaysOfRefactoring.SampleCode.RenameBooleanMethod.Before
    {
        public class BankAccount
        {
            public void CreateAccount(Customer customer, bool withChecking, bool withSavings, bool withStocks)
            {
                // do work
            }
        }
    }

     

    我们能够将上面的bool參数以独立方法的形式暴露给调用端以提高代码的可读性,同一时候我们还须要将原来的方法改为private以限制其可訪问性。

    显然我们关于要

    提取的独立方法会有一个非常大的排列组合,这是一大缺点,所以我们能够考虑引入”參数对象“重构。

     

    using LosTechies.DaysOfRefactoring.BreakResponsibilities.After;
    
    namespace LosTechies.DaysOfRefactoring.SampleCode.RenameBooleanMethod.After
    {
        public class BankAccount
        {
            public void CreateAccountWithChecking(Customer customer)
            {
                CreateAccount(customer, true, false);
            }
    
            public void CreateAccountWithCheckingAndSavings(Customer customer)
            {
                CreateAccount(customer, true, true);
            }
    
            private void CreateAccount(Customer customer, bool withChecking, bool withSavings)
            {
                // do work
            }
        }
    }

     

    总结: ”为布尔方法命名“这个重构在非常多时候都不经常使用。假设用户的參数可枚举。我们通常会枚举它的值。只是使用这样的重构也有优点,就是分解开来以后,方法多了,參数少了,代码维护起来方便了一些。

  • 相关阅读:
    vue之路由的命名视图实现经典布局
    vue之路由的嵌套 子路由
    AngularJS阻止事件冒泡$event.stopPropagation()
    Vue之路由规则中定义参数 传参方式2 params
    前台页面中的Cookie存取删除,以及Cookie的跨域问题
    关于Cookie中的Expire问题和删除Cookie那点事儿
    4-索引中的那些操作
    3-在字符串内插中的神奇用法
    2-for循环之特别的写法与神奇的Override
    1-在C#中的数字 int double
  • 原文地址:https://www.cnblogs.com/llguanli/p/6991249.html
Copyright © 2011-2022 走看看