尽管我在很多代码中发现了这种严重降低可读性并往往传达错误意图的坏味道,但这种重构本身还是很容易实现的。这种毁灭性的代码所基于的假设导致了错误的代码编写习惯,并最终导致bug。如下例所示:

public class Order {public void Checkout(List<Product> products, Customer customer) {if (!customer.getNotFlagged()) {// the customer account is flagged            // log some errors and return            return;        }// normal order processing    }}public class Customer {public Double Balance;    public Boolean IsNotFlagged;

    public Boolean getNotFlagged() {return Balance < 30d;    }public void setNotFlagged(Boolean notFlagged) {IsNotFlagged = notFlagged;    }}

如你所见,这里的双重否定十分难以理解,我们不得不找出什么才是双重否定所要表达的肯定状态。修改代码是很容易的。如果我们找不到肯定的判断,可以添加一个处理双重否定的假设,而不要在得到结果之后再去验证。
public class Order {public void Checkout(List<Product> products, Customer customer) {if (customer.getFlagged()) {// the customer account is flagged            // log some errors and return            return;        }// normal order processing    }}public class Customer {public Double Balance;    public Boolean IsFlagged;

    public Boolean getFlagged() {return Balance < 30d;    }public void setFlagged(Boolean Flagged) {IsFlagged = Flagged;    }}

来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/jgig11/p/5786447.html

重构26-Remove Double Negative(去掉双重否定)相关推荐

  1. Remove Double Negative(去除双重否定)

    WHAT 双重否定的条件语句,可以使用一个肯定的条件语句代替 记住:双重否定 = 肯定 本次重构涉及到的基本重构手法: Extract Method(提炼方法) Inline Method(内联方法) ...

  2. 重构第26天 移除双重否定(Remove Double Negative)

    理解:"移除双重否定"是指把代码中的双重否定语句修改成简单的肯定语句,这样即让代码可读,同时也给维护带来了方便. 详解:避免双重否定重构本身非常容易实现,但我们却在太多的代码中见过 ...

  3. LeetCode 26 Remove Duplicates from Sorted Array [Array/std::distance/std::unique] c++

    LeetCode 26 Remove Duplicates from Sorted Array [Array/std::distance/std::unique] <c++> 给出排序好的 ...

  4. 26. Remove Duplicates from Sorted Array【easy】

    26. Remove Duplicates from Sorted Array[easy] Given a sorted array, remove the duplicates in place s ...

  5. Leet Code OJ 26. Remove Duplicates from Sorted Array [Difficulty: Easy]

    题目: Given a sorted array, remove the duplicates in place such that each element appear only once and ...

  6. LeetCode 26. Remove Duplicates from Sorted Array

    题目: Given a sorted array, remove the duplicates in place such that each element appear only once and ...

  7. leetcode 283 Move Zeros; 27 Remove Elements; 26 Remove Duplicated from Sorted Array;

    int arr[] = {0,1,0,3,12}; //把数组的值赋给vector vector<int> vec(arr, arr+sizeof(arr)/sizeof(int)); 解 ...

  8. leetcode python3 简单题26. Remove Duplicates from Sorted Array

    1.编辑器 我使用的是win10+vscode+leetcode+python3 环境配置参见我的博客: 链接 2.第二十六题 (1)题目 英文: Given a sorted array nums, ...

  9. leetCode #26 Remove Duplicates from Sorted Array

    删除相同数字 1 class Solution { 2 public: 3 int removeDuplicates(vector<int>& nums) { 4 int coun ...

最新文章

  1. 元学习—Meta Learning的兴起
  2. ORA-09817:Write to audit file failed
  3. 二、使用rails3.0自带的数据检查功能检查输入数据
  4. 机器学习手动撸代码系列3-感知机
  5. dotnet watch+vs code提升asp.net core开发效率
  6. 你胆敢不加break试试?
  7. *【51nod - 1459】迷宫游戏(记录双向权值的Dijkstra单源最短路)
  8. android自动布局优先级,自动布局AutoLayout
  9. lambdapython语法_Python中lambda表达式的语法与应用
  10. TWaver初学实战——基于HTML5的交互式地铁图
  11. 不会Netty,你也永远不会熟悉Java
  12. 好用的jquery.animateNumber.js数字动画插件
  13. Qt实现提示音以及QSound的使用说明
  14. 单片机查表实验c语言,单片机 查表程序设计实验
  15. png文件格式详解【转】
  16. PDF是如何在线分割的?
  17. python if else语句例子,python 中if else 语句的作用及示例代码
  18. 缓冲区溢出漏洞_缓冲区溢出漏洞简介
  19. MA、WMA、EMA、EXPMA区别及公式详述
  20. 从多个pdf文档中截取部分区域拼接成一个pdf文档

热门文章

  1. 文本框”输入关键字 “提示
  2. ubuntu 源更新
  3. 光的弯曲-----1914-1919,有关相对论的天文远征
  4. Xilinx ZYNQ开发板资料共享
  5. 鸿蒙系统nas,NAS从入门到入坑:我发现了FreeNAS、My Cloud 、群晖的套路
  6. 在outlook中批量导入MSG文件
  7. RabbitMQ学习笔记
  8. 线性代数之克莱姆法则
  9. Oracle Data Guard的三种保护模式
  10. 深度残差网络(ResNet)浅析