博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为布尔方法命名
阅读量:5819 次
发布时间:2019-06-18

本文共 1323 字,大约阅读时间需要 4 分钟。

概念:本文中的”为布尔方法命名”是指假设一个方法带有大量的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        }    }}

 

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

转载地址:http://qjwdx.baihongyu.com/

你可能感兴趣的文章
opennebula 开发记录
查看>>
ubuntu 修改hostname
查看>>
sql 内联,左联,右联,全联
查看>>
C++关于字符串的处理
查看>>
6、Web Service-拦截器
查看>>
Flask 源码流程,上下文管理
查看>>
stream classdesc serialVersionUID = -7218828885279815404, local class serialVersionUID = 1.
查看>>
ZAB与Paxos算法的联系与区别
查看>>
java 读取本地的json文件
查看>>
Breaking parallel loops in .NET C# using the Stop method z
查看>>
Android Content Provider Guides
查看>>
修改故障转移群集心跳时间
查看>>
[轉]redis;mongodb;memcache三者的性能比較
查看>>
微软职位内部推荐-Sr DEV
查看>>
用计算器计算“异或CRC”
查看>>
让你的WPF程序在Win7下呈现Win8风格主题
查看>>
深刻理解C#的传值调用和传引用调用
查看>>
JDBC二查询(web基础学习笔记八)
查看>>
监听器(web基础学习笔记二十二)
查看>>
802.11 学习笔记
查看>>