每当看到代码中有一个明显的冗余的时候,我就有一个感慨,这家伙时间真多啊,放个屁还要脱裤子。
看例子。

     if (addressCode != null              && (StringUtil.equals(addressCode, HK)                        || StringUtil.equals(addressCode, MACAO)                      || StringUtil.equals(addressCode, TAIWAN) || StringUtil                       .equals(addressCode, OTHER))) {           // do something.      } else {          // do something.      }

其中StringUtil是一个null safe的方法,HK,MACAO,TAIWAN都是常量定义,后面明明有判断相等的逻辑,偏偏要在前面做一个null检查,真是多此一举。

     if (StringUtil.equals(addressCode, HK)                || StringUtil.equals(addressCode, MACAO)              || StringUtil.equals(addressCode, TAIWAN)             || StringUtil.equals(addressCode, OTHER)) {           // do something.      } else {          // do something.      }

直接去掉不是挺好的吗?
同时,从这里使用常量的方式可以推测,有可能其他地方也有基于比较的用法。代码文件往下一拉,果不其然。

     if (StringUtil.equals(addressCode, HK)) {         return "中国香港";      }     if (StringUtil.equals(addressCode, MACAO)) {          return "中国澳门";      }     if (StringUtil.equals(addressCode, TAIWAN)) {         return "中国台湾";      }     if (StringUtil.equals(addressCode, OTHER)) {          return "其它国家/地区";       }

两处放在一起考虑,使用map来存储addressCode和地址描述字符串就是一个水到渠成的事情了。
第一处的代码可以改为:

     if (addressMap.containsKey(addressCode)) {            // do something.      } else {          // do something.      }

第二处的代码可以改为:

     if (addressMap.containsKey(addressCode)) {            return addressMap.get(addressCode);       }

当然,这里addressCode对应的描述信息应该从配置文件里面读取比较好。但是由于不是本文关注的重点,不赘述。

实践中的重构19_脱裤子放屁相关推荐

  1. 一个“脱裤子放屁“的功能!

    一个"脱裤子放屁"的功能! 哩语 "脱了裤子放屁",此话通常用来讥讽别人说话做事画蛇添足.多此一举. 1.背景 故事是这样的.公司的其他部门经常会要求我们部门以 ...

  2. 脱裤子放屁之用两个栈实现队列、用两个队列实现栈

    牛客网上有一道很nt的题目,用两个栈实现队列,你直接用队列不好吗?还耗内存,真的是脱裤子放屁,但是骂归骂,题目还是要做的. 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为in ...

  3. 新一配:程序员因一行代码被老板开除,网友评论:你这不是脱裤子放屁吗?

    在生活中,只要是你自己能够写代码的就是程序员,但是程序员只是一个统称,其中的差距也是巨大.除了理论知识的差异之外,其实我们可以看见最直观的差异就是编码能力的差距或者项目经验的差距,最主要你还是你的编程 ...

  4. 脱裤子放屁,多此一举

    脱裤子放屁,多此一举. 转载于:https://www.cnblogs.com/zhangzujin/p/3892468.html

  5. 设计模式是不是一件脱裤子放屁的事

    我这条老程序狗也曾有年轻的时候,当年毛色鲜亮,油光水滑,60级经验已满,正准备升级转职.跟职业训练师聊过后接受任务:学习名字很屌的专家级技能书<Head First Design Pattern ...

  6. 一个夭折 脱裤子放屁的QSql Sqlite操作类

    本来想自己封装一下Sqlite操作类   写到一半才发现是脱裤子放屁       多此一举了 自己写的东西还没有Qt用起来简洁      唯一的好处估计就是能在整个工程里对同一个数据库进行操作     ...

  7. 当着众多MM脱裤子放屁

    今天是我的生日,女友早早的打来电话说晚上要到家里去为我祝贺生日,还要带给我惊喜!听了这个好消息!我今天工作起来是格外买力,一下跑了十几个客户!回到公司.都下午三点了,到食堂一看,只剩下可怜巴巴的一菜一 ...

  8. 模板解析原理,脱裤子放屁

    <?php$datalist = array('11','11','11','11','11','11',);$hello = "模板测试";function compile ...

  9. 用三剑客取ip地址的方法(请忽略脱裤子放屁的~)

    在这里插入图片描述

最新文章

  1. ATS 5.3.0分级缓存
  2. free崩溃原因2021
  3. Android 中SharedPreferences 使用
  4. cypress 的错误消息 - the element has become detached or removed from the dom
  5. 2021年用独立站铁赚的四种模式
  6. 2021爱分析·时尚品牌数字化厂商全景报告
  7. elasticsearch整体结构示意图
  8. UPNP端口映射简单流程
  9. Codeforces 128 A Statues【预处理+Bfs】
  10. Spinner的用法(转)
  11. 污水计算机仿真技术,活性污泥法污水处理计算机仿真软件的开发及应用
  12. 同时支持手机号、用户名、邮箱登录
  13. LMG3422R030RQZR 600V GaN晶体管LMG3425R030RQZR电路图
  14. 【游戏开发创新】当我学了Blender 建模,自制3D电脑桌面,回收站爆发了,把我做的模型都吐了出来(Blender | Unity | FBX)
  15. 【复制】互联网术语、简称、缩写
  16. 点云地图PCL转换成为八叉树地图octomap
  17. mysql group by笔试题_[PBN笔试题]mysql 一个简单查询中的group by 和 order by 的使用
  18. echarts数据传输图表
  19. 十八、redis6从入门到高级
  20. KendoUI 简单增,删,改,查操作

热门文章

  1. FDM打印机使用总结(二)
  2. 电脑自动关机是什么原因?为什么电脑会自动关机?轻松弄懂
  3. 线性代数及其应用:经典矩阵特征值证明
  4. 信号强度 android,一种获取手机信号强度的方法
  5. 施密特正交化(Schmidt)
  6. Java Email
  7. 无人机姿态解算_扩展卡尔曼滤波(2)
  8. GAMES101笔记_Lec07~09_着色 Shading
  9. unity中多屏显示
  10. mysql 1067_mysql启动错误1067进程意外终止的解决方法