详解:本文中的”为布尔方法命名”是指如果一个方法带有大量的bool 参数时,可以根据bool 参数的数量,提取出若干个独立的方法来简化参数。

理解

我们现在要说的重构并不是普通字面意义上的重构,它有很多值得讨论的地方。当一个方法带有大量的bool 参数时,会导致方法很容易被误解并产生非预期的行为,

根据布尔型参数的数量,我们可以决定提取出若干个独立的方法来。具体代码如下:

  public class BankAccount
{
public void CreateAccount(Customer customer, bool withChecking, bool withSavings, bool withStocks)
{
// do work
}
}

我们可以将上面的bool参数以独立方法的形式暴露给调用端以提高代码的可读性,同时我们还需要将原来的方法改为private以限制其可访问性。显然我们关于要提取的独立方法会有一个很大的排列组合,这是一大缺点,所以我们可以考虑引入”参数对象“重构。

  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
}
}

”为布尔方法命名“这个重构在很多时候都不常用,如果用户的参数可枚举,我们一般会枚举它的值,不过使用这种重构也有好处,就是分解开来以后,方法多了,参数少了,代码维护起来方便了一些。

最新文章

  1. hibernate多对多关联映射
  2. Hadoop学习笔记系列文章导航
  3. @Autowired 与@Resource的区别
  4. Python’s SQLAlchemy vs Other ORMs[转发 6]SQLAlchemy
  5. OpenCV Template Matching Subpixel Accuracy
  6. DOS批处理中%cd%和%~dp0的区别
  7. Python开源框架Scrapy安装及使用
  8. Linux操作系统以及各大发行版介绍——Linux operating system and major distribution is introduced
  9. html中window对象top 、self 、parent 等属性
  10. 初识eclipse及配置相关
  11. WebBrowser与IE的关系,如何设置WebBrowser工作在IE9模式下?
  12. DedeCms密码解密[转]
  13. HDU2519:新生晚会
  14. python进阶(5):组合,继承
  15. 盒模型 bug 与触发 bfc
  16. 第9条:try-with-resources优于try-finally
  17. 微信小程序避坑指南
  18. Listener 快速开始
  19. asp.net core webapi 似乎未安装在 IIS 中承载 .NET Core 项目所需的 AspNetCoreModule。请尝试修复 Visual Studio 以纠正该问题。
  20. adb设置逍遥游

热门文章

  1. Scala 深入浅出实战经典 第55讲:Scala中Infix Type实战详解
  2. redmine v3.02版的安装问题
  3. AndroidStudio小技巧--依赖库
  4. fio terse输出详解
  5. RabbitMQ学习笔记3-使用topic交换器
  6. Mysql数据备份与恢复
  7. android 电量分析工具
  8. 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包。
  9. notepad++插件
  10. Populating Next Right Pointers in Each Node II--leetcode难题讲解系列